QA Orchestrator
QA Orchestrator is an MCP server for evidence-bound code and QA review orchestration with deterministic workflows, specialist profiles, fixed bundles, and bounded session state.
Discover available QA specialist profiles, bundles, and execution schedules.
Prepare read-only checklists for one profile or a whole bundle without creating a session.
Inspect the running server's model policy (host_default or configured per-stage models).
Start a QA session with optional immutable review context, including repository/commit/diff/evidence hashes, changed files, evidence refs, and review rules.
Advance sessions through triage, primary review, deep review, and synthesis; record completed profiles/groups, structured profile reports, and final risk signals.
Renew active session leases to extend their TTL.
Read one session's state and reports, or list retained sessions to recover lost run IDs.
Delete a session's local state irreversibly.
Finalize a run as completed, partial, or blocked and store a structured final review report when the session is review-bound.
Enforce workflow contracts, citation membership, finding-source lineage, and decision ledgers, while leaving defect truth and final QA decisions to the host.
Allows configuring QA orchestration stages to use OpenAI models, with per-stage model and reasoning policies returned to the host for execution.
QA Orchestrator
A Python/FastMCP toolkit for evidence-bound code and QA reviews: deterministic workflow, ten specialist profiles, nine fixed bundles, structured findings, and optional execution and evaluation tools.
The host (Codex, Claude Code, or another integration) retrieves evidence, runs models, validates findings, and owns the final QA decision. The MCP server checks workflow and report contracts. Optional Python tools supervise actual execution; connecting the MCP server alone does not activate them.
Quick start
Requires Python 3.12+, Git, uv, and an MCP host. Supports Windows, macOS, and Linux. Model access is configured in the host.
For installation without a checkout, replace <commit-sha> with the full immutable revision you intend to install:
codex mcp add qa-orchestrator -- uvx --from 'git+https://github.com/Rbkmen/qa-orchestrator.git@<commit-sha>' qa-orchestrator-mcpUse the same revision for server and host instructions. Remote installs contain only published code; local upgrades require a checkout installation.
With no saved policy, model_policy is host_default: the host uses its own model and reasoning. Existing explicit policies remain active.
For a checkout installation:
git clone https://github.com/Rbkmen/qa-orchestrator.git
cd qa-orchestrator
uv sync --locked
uv run qa-orchestrator-doctor --jsonRegister scripts/qa-orchestrator on macOS/Linux or .venv\Scripts\qa-orchestrator-mcp.exe on Windows. The client starts the STDIO server on demand. See Installation, Codex, and Claude Code.
Reference the canonical host rules from existing instructions. Verify the connection with get_qa_orchestration_catalog, get_qa_orchestration_model_policy, and prepare_qa_orchestration(agent_profile="code_explorer"); these calls create no session.
Related MCP server: Support Ticket Triage MCP
Architecture and responsibilities
Layer | Responsibility |
MCP server | Checklists, stage/group validation, fixed escalation rules, bounded session state |
Evidence utilities | Immutable Git source/diff hashes, citation coordinates, exact context packets |
| Async executor supervision, concurrency/time budgets, group barriers and attempts |
| Installed CLI execution, strict output schema, report validation and reported usage |
Benchmark tools | Snapshot identity and scoring of explicitly adjudicated runs |
The host owns source retrieval, defect confirmation, severity, final decisions, code edits, and external writes. Jira, GitLab, CI, TestRail, Sentry, and other sources come through the host's tools. Initialization instructions are advisory; read_only=true and host_owns_decisions=true describe review ownership, while session tools mutate local state.
Review workflow
Pinned evidence → triage → primary review groups → optional deep review
→ synthesis → awaiting_host_outcome → host final outcomeBuild the evidence input; use
ReviewContextfor an auditable bound review.Call
start_qa_orchestration, then complete triage throughadvance_qa_orchestrationwith oneselected_profileorselected_bundle.Run the returned
execution_groups. Profiles in one group may run concurrently; wait for all, then record the orderedcompleted_profilesand reports in one transition. Transition calls are sequential.Supply evidence-based
risk_signalson the last primary-review transition. Perform any required deep review, then validate and synthesize the result.Call
finish_qa_orchestrationwithcompleted,partial, orblocked. A completed bound review requiresfinal_review_report. Record early stops throughadvance_qa_orchestrationfirst.
Use the session returned by each transition. Read/recover with get_qa_orchestration or list_qa_orchestrations. Revision checks and request keys protect against stale submissions and lost-response retries.
completed records workflow completion; it is not a CI pass or release approval. For a clean single-profile route, skip_synthesis=true skips the separate synthesis stage, but still requires host validation and a final report. Findings, material unresolved questions, coverage gaps, unverified notes, or risk signals prevent the shortcut. Bundles retain synthesis.
Deep-review rules
Trigger | Required signals |
High-risk uncertainty |
|
Multiple complexity signals | At least two of |
Critical evidence conflict |
|
Enabled signals require rationale and evidence refs. Missing CI, Stage, or device execution alone does not require escalation; uncertainty must concern a material question that scoped review could resolve.
Example: ordinary QA of a small Ruby guard change checks requirements, the changed branch, callers, and assertions. The host can select ruby_reviewer, execute its checklist, submit its report and risk signals, synthesize, then finalize. See the complete MCP tool contract for payloads.
Profiles and bundles
Use one profile for a narrow, low-risk concern; use a bundle for broad or cross-concern work. File count alone does not define scope.
Profile | Focus |
| Faraday — Evidence Investigator: paths, callers, dependencies and evidence map |
| Changed-code failure modes and contract breaks |
| Test coverage and meaningful assertion gaps |
| Authentication, authorization, input validation and sensitive data |
| Swallowed errors, fallbacks, timeout/rollback and error propagation |
| Types, narrowing, casts, async and error contracts |
| State, effects, rendering, accessibility and visible behavior |
| Ruby semantics, exceptions, persistence and relevant jobs |
| Validation, serialization, cancellation, cleanup and MCP contracts |
| React Native/native lifecycle, navigation and platform contracts |
Test Analyzer returns coverage gaps; Evidence Investigator returns an evidence map and unresolved links. Both are prohibited from returning implementation findings, enforced by server validation and the Codex output schema.
In the schedules below, + means one concurrent-capable group; → means a barrier between groups.
Bundle | Execution groups |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The Python bundle starts all profiles together; required context must be supplied upfront. Reports from previous groups are available only to subsequent groups. The installed catalog is authoritative; see the bundle and profile catalog.
Evidence and context
A bound ReviewContext pins repository identity, full base/head commits, diff and packet SHA-256, changed paths, and evidence IDs. Optional registry metadata adds source hashes, coordinates and external locators. Bound profiles submit structured reports; finding coordinates must be supported by cited head-source records when a registry is supplied.
Local utilities verify immutable Git bytes, hashes and coordinates. External requirements/runtime evidence remains unverified by the Git checker. The MCP server validates identifiers and citations; it does not read the raw packet.
Exact context packing retains original UTF-8 fragments without summarizing or truncating them. Changed source, diff and supplied requirements remain mandatory. Optional omissions are declared; mandatory overflow fails before execution. Reports cannot cite omitted refs. The Codex executor defaults to 1,500,000 rendered bytes and a 2 MB serialized packet limit, not token limits. Source caching is bounded and in memory; Python AST chunks preserve source coordinates.
See Evidence Registry and context packing.
Findings and final decisions
Reports separate candidates, coverage gaps, unverified claims and evidence maps. The host assigns every candidate one verdict: confirmed, rejected, duplicate, or unverified, with rationale and evidence. Final findings retain profile/candidate lineage; confirmation requires severity, impact, affected area and source locations. Finalization checks the complete decision ledger.
Paired failure_condition and flip_condition describe failure prerequisites and refuting evidence. Conditioned candidates require a context/candidate-bound counterevidence check; confirmation or duplicate linkage requires not_refuted. The host performs that inspection. Legacy candidates may omit both conditions.
Explicit scoped ReviewRuleset rules can raise concerns or guard against known false-positive patterns. They bind reports through a digest and guide inspection; they do not automatically suppress findings or learn from reviews. See rules and counterevidence.
Host execution
HostReviewAdapter supervises an injected async execute_profile(job) for a bound session with triage complete. It enforces group barriers, concurrency/time limits, lease renewal and cancellation. It stops at deep review or synthesis; later stages and final decisions remain with the host.
Timeouts and explicit RetryableProfileError can be retried. Permanent failures are not replayed automatically. A failed group is never recorded as complete; the run becomes partial, retaining successful unsaved reports.
CodexProfileExecutor uses an authenticated installed CLI, a fresh temporary workspace, read-only sandbox, no inherited user configuration, and a strict JSON schema. Invalid output or detected forbidden tool actions fail the call; timeout/cancellation terminates its process tree. In host_default, it requires an explicit model. Other runtimes use a custom executor.
Optional checkpoints reuse validated reports only when context, rules, checklist, model policy, previous-group reports and executor/instruction identity match. Reuse is reported separately; disable it for independent benchmark repetitions. See Host Adapter and execution tools.
Performance and evaluation
Narrow routing, concurrent groups, the clean-profile synthesis shortcut, checkpoints and bounded context selection can avoid unnecessary work. Execution speed and latency preferences remain controlled by the user's host/provider settings; improvement requires measurement.
execution_attempts records fresh successful, failed and cancelled calls, queue wait, duration and available phase/token observations. Missing usage remains unknown, never zero. Checkpoint reuse is separate; model_seconds includes the CLI/process interval rather than provider-only inference. No automatic price estimate is produced.
Benchmark tools score pinned runs using explicit adjudications and can report precision, eligible recall, high-impact misses, evidence validity, time, usage and repetition stability. They do not launch models or decide matches. Keep reference findings hidden and compare fresh matched runs. Unit tests do not prove review quality or speed. See Benchmark and Profile Evaluation.
MCP tools
Tool | Purpose |
| Profiles, bundles and schedules |
| One profile checklist |
| Bundle checklists and groups |
| Running server's policy snapshot |
| Create a session |
| Validate and record a transition/reports |
| Extend an active lease |
| Read a retained session |
| Discover retained session IDs |
| Finalize host outcome and report |
| Irreversibly discard local session state |
Reads do not extend TTL. Deletion neither finalizes a review nor cancels host execution.
CLI tools
Command | Purpose |
| Configure per-stage models or return to host settings |
| Inspect/validate the saved policy |
| Suggest pinned callers, contracts and conventionally named tests |
| Register/verify source and diff |
| Exact context packets/source chunks |
| Bind explicit review rules |
| Import, score repetitions and compare same-model speed runs |
| Read-only local diagnostics |
qa-orchestrator aliases qa-orch. Running either without a subcommand starts the MCP server. These tools do not provide a one-command MR review and publication flow.
Configuration
host_default uses the host's model/reasoning. Optional configured policy sets provider, model and effort per stage. Setup validates local metadata, not account access or live model capabilities; no provider credentials are stored.
Variable | Default |
|
|
|
|
|
|
|
|
| Unset; opt-in SQLite recovery |
Pass overrides through the MCP client's environment. Restart the server connection after code/policy changes: CLI reload does not update that process. Inspect the loaded policy with get_qa_orchestration_model_policy; neither configuration nor session metadata proves model execution.
Storage and trust boundaries
Session state is bounded and in memory by default. Optional SQLite restores non-expired unfinished sessions and finalized bound reviews with structured reports. Finalized legacy sessions without artifacts are removed. Checkpoints use a separate opt-in store; use one server process per session-store file.
Stored reports can contain source-derived findings and descriptions. Raw packets, prompts, transcripts and benchmark artifacts are managed separately by the host. Reports are limited to 64 KiB each and 256 KiB combined per session. Normal MCP calls need no network; installation, evidence tools and model execution may need it.
Validation proves structure, identity and reported sequence, not source completeness, defect truth or runtime success. The CLI read-only sandbox restricts writes, not all reads; strict read isolation needs an OS/container boundary. Forbidden-action detection cannot prove an action never started. No autonomous external writes or learned persistent QA memory are added.
Development and documentation
uv run pytest -q
uv run ruff check .
uv run qa-orchestrator-doctor --json
git diff --checkImplementation: src/qa_orchestrator/. Tests cover contracts, workflow, storage, evidence and execution supervision; real-model quality and target application/device checks are separate.
See CONTRIBUTING.md, Orchestration Policy, Review Upgrades, and SECURITY.md. Licensed under MIT.
Available Tools
11 toolsadvance_qa_orchestrationRecord QA step resultA
Record one active QA step's result; return updated state and next_action instructions for the host.
After completed triage, the response also includes selected_review_routes with the exact selected checklists and execution_groups, avoiding a separate preparation tool call.
For finalization, use finish_qa_orchestration at awaiting_host_outcome; after early stops, match the recorded outcome.
Triage: select exactly one bundle or profile; default to one profile for narrow work.
Every call requires run_id, completed_step, and status. Copy completed_step from the latest session's current_step; use status=completed after a successful stage.
Primary review: after a whole execution group finishes, report its ordered profiles together with completed_profiles. In a review-context-bound session, also supply matching profile_reports. Older hosts may continue reporting completed_profile one at a time. The final group requires risk_signals ({} if none).
Clean single-profile fast path: set skip_synthesis=true only when that review has no findings, no unresolved material questions, and no risk signals. This bypasses only the separate synthesis step; the host still validates and produces the final QA report. The server cannot verify this claim. Bundles, findings, unresolved questions, or any risk signal require the normal synthesis stage.
Trust boundary: completion fields, execution_metrics, and risk_signals are host-reported. The server cannot confirm each review ran, whether it ran concurrently, or that risk_signals reflect evidence; bound sessions validate report/profile alignment, citation membership, finding-source lineage, and risk-signal reference membership, not report truth.
Early stop: omit route selectors, completion fields, and risk_signals.
Success saves state and refreshes expires_at.
Invalid/stale requests and unknown/expired run_ids fail without advancing.
With request_id and expected_revision, exact retries return current retained state without another transition or TTL refresh. Conflicting payloads and new stale revisions fail.
Legacy calls without request_id are non-idempotent: never retry them blindly. After a lost response or transition error, read get_qa_orchestration(run_id) and continue from its current_step; if the session is unknown or expired, start a new session.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | Session identifier returned by start_qa_orchestration or list_qa_orchestrations: qar- followed by 32 lowercase hexadecimal characters. Reuse it for this session; do not invent or transform it. | |
| status | Yes | Required on every call, including successful steps: use completed when the active step succeeds. Use partial or blocked only to stop early, then finalize with the same outcome using finish_qa_orchestration. | |
| request_id | No | Optional unique transition key. Requires expected_revision. Retrying the exact same payload returns current retained state without repeating the transition; reusing the key with another payload is rejected. | |
| risk_signals | No | Required with the final completed primary-review profile. Send an empty object when no evidence-based fixed escalation signals apply; any true signal requires a short rationale and Evidence Packet references. Do not send on earlier profiles or on the synthesis transition. | |
| completed_step | Yes | Required: copy the exact current_step from the latest session returned by start, advance, or get. Complete only triage, primary_review, deep_review, or synthesis. If current_step is awaiting_host_outcome, call finish_qa_orchestration instead. | |
| skip_synthesis | No | Optional clean-review fast path. Set true only after one selected profile reports no findings or unresolved material questions and every risk signal is false. The host still validates and reports the final QA result; the server trusts this host claim and cannot verify review content. Bundles, findings, unresolved questions, or any risk signal require the normal synthesis stage. | |
| profile_reports | No | For a review-context-bound session, one structured result per completed profile, in the same order. Every finding must cite Evidence Packet references. Optional execution_metrics are host-reported and are not independently verified. Up to ten reports are accepted, with 64 KiB per report and 256 KiB combined per session. Omit for legacy sessions without review_context. | |
| selected_bundle | No | For completed triage, choose one fixed bundle only for broad, cross-concern, or high-risk work; several changed files alone do not require one. It is mutually exclusive with selected_profile; recommended_bundles is only a shortlist. | |
| selected_profile | No | For completed triage, default to one allowed profile for a narrow, single-concern, low-risk review. It is mutually exclusive with selected_bundle. | |
| completed_profile | No | Legacy-compatible single-profile completion. After the complete execution_group has finished, submit exactly the current_profile returned by the latest advance_qa_orchestration call and follow fixed route order; never advance parallel profiles concurrently. Use completed_profiles to record a whole group in one call. Omit for other steps or an early stop. | |
| expected_revision | No | Optional workflow revision from the latest session. A new transition is rejected if stale; a recognized request_id replay remains safe. | |
| completed_profiles | No | After the whole next execution_group has finished, submit every profile in that group exactly once and in fixed route order. This records the group in one call. For a bundle, the list must match the next complete group; for one profile, submit a one-item list. Mutually exclusive with completed_profile. Omit for other steps or an early stop. |
Output Schema
| Name | Required | Description |
|---|---|---|
| run_id | Yes | |
| status | Yes | |
| revision | No | Workflow revision for conditional writes. |
| read_only | No | |
| task_type | Yes | |
| expires_at | Yes | |
| next_action | Yes | |
| current_step | Yes | |
| model_policy | No | |
| risk_signals | No | |
| review_context | No | |
| allowed_bundles | No | |
| current_profile | No | |
| deep_assessment | No | |
| profile_reports | No | |
| review_profiles | No | |
| selected_bundle | No | |
| allowed_profiles | No | |
| deep_reason_code | No | |
| selected_profile | No | |
| completed_profiles | No | |
| final_review_report | No | |
| host_owns_decisions | No | |
| recommended_bundles | No | |
| transition_receipts | No | Bounded request hashes for safe replay; no raw transition payloads are stored. |
| recommended_profiles | No | File-type-based profile hints only; the host selects the route. |
| selected_review_routes | No | After a successful triage selection, the exact checklists and execution groups for the selected route. Use this instead of a separate prepare call. This response-only field is not stored in the session. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, idempotentHint=false, destructiveHint=false; the description goes well beyond them by disclosing state persistence with TTL refresh, the exact idempotency contract (request_id+expected_revision replays are safe, legacy calls are not), failure behavior for stale/invalid/expired runs, and a trust boundary enumerating which host-reported fields the server cannot verify.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the next_action return are front-loaded, and the bulleted structure is scannable; nearly every sentence carries an operational constraint. It is long and a few points (trust boundary, skip_synthesis preconditions) are restated, which keeps it short of a 5 for a description this size.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter stateful transition tool with siblings, the description covers the transition model, early-stop path, finalization handoff, idempotency, failure modes, and trust boundaries. An output schema exists, and the description only briefly notes the selected_review_routes addition rather than re-explaining return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds cross-parameter workflow semantics the schema states only locally: which fields to omit on an early stop, when risk_signals is mandatory (final primary-review profile, {} if none) versus forbidden (earlier profiles, synthesis), and how completed_profile and completed_profiles relate to execution groups and route order.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a precise verb+resource+scope: 'Record one active QA step's result; return updated state and next_action instructions for the host.' It also explicitly distinguishes itself from the sibling finish_qa_orchestration by naming the awaiting_host_outcome routing condition, so an agent can pick correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when/when-not rules: use finish_qa_orchestration at awaiting_host_outcome, omit route selectors on early stops, set skip_synthesis only under three named conditions, and use get_qa_orchestration to recover after a lost legacy call. It also names the exact alternative to use when the session is unknown or expired (start a new session).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_qa_orchestrationDiscard QA session stateADestructiveIdempotent
Delete one QA session from memory and configured recovery storage. To retain a final QA outcome, use finish_qa_orchestration.
run_id selects one session at any stage; no prior advance or finish required. Recover a lost ID via list_qa_orchestrations(), matching task type, route, and stage; confirm the target if several entries match.
Idempotent: deleted=true confirms absence, including unknown or expired IDs.
Irreversible: get/advance/finish cannot use the ID, even after restart.
Storage failure: memory stays intact; resolve the error and retry.
Host tasks and model executions are unaffected.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | Session identifier returned by start_qa_orchestration or list_qa_orchestrations: qar- followed by 32 lowercase hexadecimal characters. Reuse it for this session; do not invent or transform it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| run_id | Yes | |
| deleted | No | The run_id is absent from this server and its recovery store, including if already absent. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive, idempotent, and non-read-only, but the description adds material context beyond them: deleted=true confirms absence even for unknown/expired IDs, irreversibility that survives restart, storage-failure behavior where memory stays intact, and the explicit note that host tasks and model executions are unaffected. These are exactly the operational details annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded imperative sentence, then a bulleted block where each line carries a distinct fact (mutation behavior, idempotency, irreversibility, failure recovery, unaffected systems). No sentence restates the name or the annotations verbatim, and there is no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return fields, and it correctly stops there. For a single-parameter destructive mutation with full annotation coverage, everything an agent needs to call it safely and recover from edge cases is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema itself documents the qar- pattern, so the baseline is 3. The description nonetheless adds dispatch-relevant meaning: run_id can select a session at any stage with no prior advance or finish, and it points at list_qa_orchestrations as the recovery path for an unknown ID.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Delete one QA session from memory and configured recovery storage') and immediately distinguishes itself from the sibling that shares its domain by naming finish_qa_orchestration as the retain-outcome alternative. An agent can differentiate it from advance/get/list/prepare with no schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to use this tool ('to retain a final QA outcome, use finish_qa_orchestration' implies deletion is for discarding), relaxes a constraint ('no prior advance or finish required'), and routes the agent to list_qa_orchestrations to recover a lost ID with instructions for disambiguating matches. Explicit alternatives and conditions are provided rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
finish_qa_orchestrationRecord final QA outcomeAIdempotent
Finalize the QA run and store its structured report when the session is review-bound.
After normal synthesis or an eligible clean single-profile fast path, use the retained run_id at awaiting_host_outcome to choose completed, partial, or blocked. After an early stop recorded by advance_qa_orchestration, outcome must match its partial/blocked status.
A completed review-bound session requires
final_review_report.Structured reports survive a restart only when the same session store is configured; otherwise they are in-memory only. They remain until TTL expiry, capacity eviction, or explicit deletion.
Same outcome: returns the retained terminal session.
Different outcome:
conflicting final outcome; status unchanged.Premature call:
outcome is not ready. Finalized sessions with review artifacts can be restored from the configured store and expire at configured TTL (1800s default), or are removed by eviction or explicit deletion. Legacy finalized sessions without review artifacts are removed at restart. Removed run_ids cannot be deduplicated.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | Session identifier returned by start_qa_orchestration or list_qa_orchestrations: qar- followed by 32 lowercase hexadecimal characters. Reuse it for this session; do not invent or transform it. | |
| outcome | Yes | Host-selected final session status: completed, partial, or blocked. | |
| expected_revision | No | Optional current workflow revision for a new finalization. The same retained outcome/report can still be replayed idempotently. | |
| final_review_report | No | Structured synthesized findings and coverage for a review_context-bound session. Required when its outcome is completed; each finding cites registered evidence refs and the original profile-local candidate IDs and evidence that support it. The report must include one candidate_decisions entry per submitted candidate. Confirmed findings require host severity, impact, affected area, and source locations. The report is limited to 64 KiB; profile plus final reports are limited to 256 KiB per session. |
Output Schema
| Name | Required | Description |
|---|---|---|
| run_id | Yes | |
| status | Yes | |
| revision | No | Workflow revision for conditional writes. |
| read_only | No | |
| task_type | Yes | |
| expires_at | Yes | |
| next_action | Yes | |
| current_step | Yes | |
| model_policy | No | |
| risk_signals | No | |
| review_context | No | |
| allowed_bundles | No | |
| current_profile | No | |
| deep_assessment | No | |
| profile_reports | No | |
| review_profiles | No | |
| selected_bundle | No | |
| allowed_profiles | No | |
| deep_reason_code | No | |
| selected_profile | No | |
| completed_profiles | No | |
| final_review_report | No | |
| host_owns_decisions | No | |
| recommended_bundles | No | |
| transition_receipts | No | Bounded request hashes for safe replay; no raw transition payloads are stored. |
| recommended_profiles | No | File-type-based profile hints only; the host selects the route. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: it discloses idempotent replay semantics ("Same outcome: returns the retained terminal session"), the conflict failure mode ("conflicting final outcome"), the readiness gate, and a full persistence lifecycle (restart survival depends on a configured session store, in-memory otherwise, TTL 1800s default, capacity eviction, explicit deletion, legacy sessions dropped at restart). This is exactly the mutation/idempotency/permanence context the annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well front-loaded: action, preconditions, then error/idempotency behavior, then retention. Slightly penalized because the persistence rules are stated twice — the third bullet on restart/TTL/eviction and the closing paragraph restate the same lifecycle facts rather than consolidating them.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a state-machine finalizer with a rich input schema and an output schema, the description covers the remaining agent-facing unknowns: readiness gating, outcome-consistency rules, idempotent replay, and artifact retention/expiry. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already defines run_id, outcome, expected_revision and the report shape; baseline would be 3. The description adds real cross-parameter meaning on top: outcome must match a prior early-stop status, and completed review-bound sessions require final_review_report, which the schema marks only as default-null.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb and resource ("Finalize the QA run and store its structured report") plus the scoping condition ("when the session is review-bound"). It distinguishes itself from siblings by naming the state transition point (awaiting_host_outcome) and contrasting with advance_qa_orchestration's early-stop path, so an agent can separate it from get/list/advance without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call it ("After normal synthesis or an eligible clean single-profile fast path"), how to choose the outcome in the early-stop case ("outcome must match its partial/blocked status"), and when it is invalid ("Premature call: `outcome is not ready`"). Alternatives and preconditions are named rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_qa_orchestrationInspect one QA sessionARead-onlyIdempotent
Read one retained run_id's state, including bound review context and structured reports.
Use run_id on the server retaining that session to resume or reconcile a lost
advance_qa_orchestration response. Reads do not extend expires_at. Errors unknown run_id or
expired session require a new session via start_qa_orchestration.
If run_id is lost, use list_qa_orchestrations() to find retained sessions first.
For all-stage server policy, use get_qa_orchestration_model_policy(); for review progress or final outcome, use advance_qa_orchestration or finish_qa_orchestration, respectively. Local stdio access requires no additional credentials.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | Session identifier returned by start_qa_orchestration or list_qa_orchestrations: qar- followed by 32 lowercase hexadecimal characters. Reuse it for this session; do not invent or transform it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| run_id | Yes | |
| status | Yes | |
| revision | No | Workflow revision for conditional writes. |
| read_only | No | |
| task_type | Yes | |
| expires_at | Yes | |
| next_action | Yes | |
| current_step | Yes | |
| model_policy | No | |
| risk_signals | No | |
| review_context | No | |
| allowed_bundles | No | |
| current_profile | No | |
| deep_assessment | No | |
| profile_reports | No | |
| review_profiles | No | |
| selected_bundle | No | |
| allowed_profiles | No | |
| deep_reason_code | No | |
| selected_profile | No | |
| completed_profiles | No | |
| final_review_report | No | |
| host_owns_decisions | No | |
| recommended_bundles | No | |
| transition_receipts | No | Bounded request hashes for safe replay; no raw transition payloads are stored. |
| recommended_profiles | No | File-type-based profile hints only; the host selects the route. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavior beyond the annotations: reads do not extend expires_at (TTL semantics), the run_id is server-scoped ('use run_id on the server retaining that session'), and it enumerates the error strings `unknown run_id` and `expired session` with the required remedy. It also notes local stdio needs no extra credentials. Nothing contradicts readOnlyHint/idempotentHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action in the first sentence, then separates recovery semantics from sibling routing into distinct paragraphs. Every sentence carries non-redundant information (TTL, error codes, credentials, routing), with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is legitimately omitted. The description compensates with expiry behavior, error semantics, recovery path, sibling routing, and auth notes, which is everything an agent needs to invoke this read tool correctly in a multi-tool orchestration flow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single run_id parameter is well documented there (pattern, origin), so the baseline is 3. The description adds genuine semantics the schema lacks: the run_id must be presented to the server that retains the session, and that a lost value should be recovered via list_qa_orchestrations rather than reconstructed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Read one retained run_id's state, including bound review context and structured reports.' The scope (single session by run_id) is explicit, and the description names sibling tools it is not (advance_qa_orchestration, finish_qa_orchestration, get_qa_orchestration_model_policy), so it is distinguishable without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use triggers: resume or reconcile a lost advance_qa_orchestration response, or find a retained session via list_qa_orchestrations when run_id is lost. It also routes to the correct alternatives for model policy, review progress, and final outcome, and states the recovery path (start_qa_orchestration) for unknown/expired run_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_qa_orchestration_catalogDiscover QA profiles and bundlesARead-onlyIdempotent
Read the static profile/bundle catalog: specialists, review scopes, and execution schedules.
Use before creating a session or choosing its triage route; no session or arguments required. Task-type recommendations are shortlists, not restrictions. Choose a bundle for broad work or a single profile for a narrow concern using changed files and confirmed stack.
For a session, the successful triage response includes selected_review_routes with the selected profile or bundle checklists and execution_groups.
Standalone or recovery lookup: prepare_qa_orchestration(agent_profile) or prepare_qa_orchestration_bundle(bundle).
Create a session: start_qa_orchestration; set its route: advance_qa_orchestration.
Session IDs: list_qa_orchestrations().
Available routes come from the installed server's bundled definitions; active sessions and configured models do not change this catalog.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| bundles | Yes | |
| profiles | Yes | |
| read_only | No | |
| host_owns_decisions | No | |
| recommended_bundles_by_task_type | Yes | Task-based shortlists only; they do not restrict the available bundles. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so safety is covered. The description adds genuinely non-obvious context: the catalog is static, requires no session or arguments, and is unaffected by active sessions or configured models. It stops short of describing the response shape, but an output schema exists to carry that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose in the first sentence, then routes. The bulleted alternative map is dense but each entry carries routing value; it is slightly longer than strictly necessary for a zero-argument catalog read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers everything else an agent needs: what the catalog contains, when to consult it, that it is static and argument-free, and which sibling handles each follow-up action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. The description reinforces this by noting 'no session or arguments required,' which prevents an agent from inventing a session_id or filter argument.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the static profile/bundle catalog') and enumerates its contents (specialists, review scopes, execution schedules), which no sibling covers. An agent can distinguish it from prepare_qa_orchestration, start_qa_orchestration, and list_qa_orchestrations without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it ('before creating a session or choosing its triage route') and routes to alternatives by scenario: standalone/recovery lookup goes to prepare_qa_orchestration(_bundle), session creation to start_qa_orchestration, route setting to advance_qa_orchestration, session listing to list_qa_orchestrations. It also clarifies that task-type recommendations are shortlists, not restrictions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_qa_orchestration_model_policyInspect server model settingsARead-onlyIdempotent
Read the server-wide model policy used to create new sessions.
The mode is either host_default (use the host's configured model and reasoning) or configured (use the returned per-stage provider, model IDs, and reasoning).
Use to inspect the policy loaded for new sessions; takes no arguments.
Existing session state and current-stage policy: get_qa_orchestration(run_id).
Create a session with these settings: start_qa_orchestration.
Reads the loaded in-memory snapshot, not the current policy file; restart the server connection after file changes. No session is created and no provider is contacted; the result does not verify which model the host executed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | Yes | |
| provider | No | |
| deep_model | No | |
| triage_model | No | |
| primary_model | No | |
| deep_reasoning | No | |
| synthesis_model | No | |
| triage_reasoning | No | |
| primary_reasoning | No | |
| synthesis_reasoning | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/openWorld annotations, it discloses that the read comes from a loaded in-memory snapshot rather than the current policy file, that a server connection restart is needed after file changes, and that no session is created and no provider is contacted. It also warns the result does not verify which model the host executed, which prevents an important false conclusion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then mode semantics, then routing and caveats in a scannable bulleted form. It is slightly longer than strictly necessary (the mode paragraph could be tighter), but every sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return structure need not be restated, and the description instead supplies the interpretive key ('host_default' vs 'configured') and the freshness caveat. For a no-argument read tool this leaves an agent with everything needed to call it and correctly interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; the description correctly states 'takes no arguments,' removing any ambiguity about an implicit run_id. There is no parameter syntax to add meaning to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the server-wide model policy used to create new sessions') and immediately explains the two possible modes of what is returned. It distinguishes itself from siblings by pointing to get_qa_orchestration for session state and start_qa_orchestration for creating sessions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit conditions for use ('Use to inspect the policy loaded for new sessions; takes no arguments') and names two alternatives with the conditions that select them. Nothing about when to reach for this tool versus its siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_qa_orchestrationsList retained QA sessionsARead-onlyIdempotent
List non-expired QA session identifiers and brief metadata, including bound review identity.
Recover a lost run_id by matching task type, route, and stage; confirm if several match. Call get_qa_orchestration(run_id) for full state and next action, or get_qa_orchestration_model_policy() for server policy. Takes no arguments.
Includes retained terminal sessions; expired or evicted sessions are unrecoverable.
Sorts by expires_at descending, then run_id descending; empty means none are retained.
After restart, unfinished sessions and finalized sessions with saved review artifacts restored from configured local storage appear.
Reading does not extend session TTL.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| sessions | Yes | |
| read_only | No | |
| host_owns_decisions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnly, idempotent, closed-world). The description adds genuinely non-obvious traits: retention scope (terminal sessions retained, expired/evicted unrecoverable), deterministic sort order, restart/storage restoration behavior, and the fact that reading does not extend TTL. This is exactly the behavioral context an agent cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the primary purpose in sentence one, followed by usage and alternatives, then three tight bullets for retention, ordering, and restart semantics. No sentence is redundant and each bullet carries distinct operational value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape explanation is unnecessary. Between purpose, routing to alternatives, retention/expiry rules, sort order, and TTL behavior, the description covers everything an agent needs to decide to call this and interpret the results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. The description correctly notes 'Takes no arguments,' which is fully adequate; there is nothing further to specify.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List non-expired QA session identifiers and brief metadata') and immediately scopes it against the sibling that returns detail ('Call get_qa_orchestration(run_id) for full state'). An agent can distinguish this list tool from get_qa_orchestration and get_qa_orchestration_model_policy without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('Recover a lost run_id by matching task type, route, and stage; confirm if several match') and routes to two named alternatives for different needs (full state, server policy). It also states the calling constraint ('Takes no arguments'), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_qa_orchestrationRead specialist review checklistARead-onlyIdempotent
Return one specialist's fixed ReviewRoute checklist: profile, display_name, focus, required_sections, constraints, and escalation_signals.
Use before reviewing one scoped concern when no session is active, or to recover a checklist when the triage response is unavailable; no session is required.
Standalone review: use get_qa_orchestration_catalog() to match profile focus to changed files and confirmed stack.
Session primary_review: use selected_review_routes returned by the successful triage advance call. It contains every selected checklist and execution_group; do not make a separate preparation call for the same session.
This local lookup reads bundled definitions, without executing reviews or calling models. Use advance_qa_orchestration to apply a session route. Results depend only on agent_profile. Invalid values fail input validation; retry with a listed enum value.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_profile | Yes | Choose one fixed specialist profile: code_explorer maps execution and evidence; code_reviewer reviews implementation; pr_test_analyzer reviews coverage; security_reviewer and silent_failure_hunter target security and silent failures; ruby_reviewer, python_reviewer, typescript_reviewer, react_reviewer, and mobile_reviewer target their named stacks. Choose from changed files and confirmed stack. |
Output Schema
| Name | Required | Description |
|---|---|---|
| focus | Yes | The profile's review boundary and primary responsibility. |
| profile | Yes | |
| read_only | No | |
| constraints | Yes | Shared limits for this read-only review profile. |
| display_name | Yes | |
| required_sections | Yes | Profile-specific output sections; use these instead of a generic template. |
| escalation_signals | No | Conditions to assess against evidence. A listed condition is not itself a deep-review trigger; set risk_signals only when the corresponding evidence-based condition applies. |
| host_owns_decisions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/openWorld, but the description adds real context beyond them: it is a local lookup of bundled definitions that executes no reviews or models, needs no session, is deterministic on agent_profile, and fails input validation on invalid enums. It does not, however, describe anything about the returned checklist structure beyond naming the fields, and no output schema detail is referenced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose, then uses tight bullets for the two usage scenarios before closing with two short operational notes. Slightly long with some restatement of the session distinction, but every section carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single enum parameter, full schema coverage, existing annotations, and an output schema covering return values, the description supplies everything else needed: usage routing, no-session behavior, local-only execution, and error recovery. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the enum values are already fully documented in the schema itself, so the baseline is 3. The description adds only marginal value: 'Results depend only on agent_profile' and the retry-with-listed-enum guidance, which is behavioral rather than semantic.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a concrete verb and resource: 'Return one specialist's fixed ReviewRoute checklist', then names the exact payload fields (profile, display_name, focus, required_sections, constraints, escalation_signals). It is clearly distinguishable from siblings like advance_qa_orchestration, get_qa_orchestration_catalog, and prepare_qa_orchestration_bundle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use branches: standalone review uses get_qa_orchestration_catalog to match profile to changed files, while session primary_review should use selected_review_routes from triage instead. It also states the exclusion plainly – 'do not make a separate preparation call for the same session' – and notes no session is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_qa_orchestration_bundleRead bundle review checklistsARead-onlyIdempotent
Return every fixed ReviewRoute checklist and execution wave for one bundle.
Use for standalone bundle lookup or to recover checklists when the successful triage response is unavailable. In a session, the triage advance response includes the selected checklists and execution_groups. Run execution_groups in order; profiles in one group are independent and may run concurrently when the host supports it. After every profile in the group finishes, record the complete group once in bundle order with completed_profiles. Older hosts may continue using completed_profile one at a time. For a single profile, use prepare_qa_orchestration. This stateless lookup reads bundled definitions; it does not execute reviews, create a session, or call models.
| Name | Required | Description | Default |
|---|---|---|---|
| bundle | Yes | Selected fixed multi-profile bundle. The tool returns every checklist and its ordered execution_groups. Profiles in the same group may run concurrently; for one profile, use prepare_qa_orchestration. |
Output Schema
| Name | Required | Description |
|---|---|---|
| bundle | Yes | Fixed bundle whose profile checklists are returned. |
| routes | Yes | Detailed checklists in the selected route's declared profile order. Each route is a fixed, read-only checklist; it does not execute a review. |
| execution_groups | Yes | Ordered execution waves whose flattened profile IDs exactly match routes. Run the groups in order; profiles in the same group are independent and may be reviewed concurrently by the host. Wait for every profile in a group before reporting it with one completed_profiles call in the declared order. Older hosts may report each completed_profile separately. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/no-open-world, but the description adds operational semantics: stateless lookup, no session creation, no model calls, and the ordering/concurrency rules for execution_groups. It does not cover error behavior or pagination, but the added workflow context is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and usage are front-loaded, but the middle block about recording completed groups with completed_profiles vs completed_profile describes the advance tool's workflow rather than this read tool, which is scope bleed in an otherwise tight definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values; it covers purpose, usage conditions, the alternative tool, and execution semantics. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with an enum, so the schema already fully documents the single 'bundle' parameter. The description's note that it returns checklists and ordered execution_groups adds only marginal meaning beyond the enum list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Return every fixed ReviewRoute checklist and execution wave for one bundle.' It explicitly distinguishes itself from prepare_qa_orchestration (single profile) and implicitly from advance/triage flows, so an agent can route without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use conditions ('standalone bundle lookup or to recover checklists when the successful triage response is unavailable') and names the alternative for the single-profile case. Nothing about selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
renew_qa_orchestrationRenew active QA session leaseA
Extend an active session's TTL while host review work is running.
Renew before expires_at. This changes only the lease, without advancing a profile or workflow revision. Active primary/deep/synthesis and awaiting-host-outcome sessions may be renewed; terminal or expired sessions cannot be revived. No worker or model is launched.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | Session identifier returned by start_qa_orchestration or list_qa_orchestrations: qar- followed by 32 lowercase hexadecimal characters. Reuse it for this session; do not invent or transform it. | |
| expected_revision | No | Optional current workflow revision; stale renewals fail. |
Output Schema
| Name | Required | Description |
|---|---|---|
| run_id | Yes | |
| status | Yes | |
| revision | No | Workflow revision for conditional writes. |
| read_only | No | |
| task_type | Yes | |
| expires_at | Yes | |
| next_action | Yes | |
| current_step | Yes | |
| model_policy | No | |
| risk_signals | No | |
| review_context | No | |
| allowed_bundles | No | |
| current_profile | No | |
| deep_assessment | No | |
| profile_reports | No | |
| review_profiles | No | |
| selected_bundle | No | |
| allowed_profiles | No | |
| deep_reason_code | No | |
| selected_profile | No | |
| completed_profiles | No | |
| final_review_report | No | |
| host_owns_decisions | No | |
| recommended_bundles | No | |
| transition_receipts | No | Bounded request hashes for safe replay; no raw transition payloads are stored. |
| recommended_profiles | No | File-type-based profile hints only; the host selects the route. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the write/idempotency/safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false), so the bar is lower; the description still adds real behavioral context: no worker or model is launched, the lease is the only thing mutated, and terminal/expired sessions cannot be revived. It doesn't state what happens on failure of a stale renewal beyond what the schema notes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action in the first sentence and layers constraints after it; every sentence carries information (timing, scope of mutation, eligibility, side-effect absence). Slightly dense but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. Given the tool's complexity, the description covers timing, mutation scope, preconditions, eligibility, and the absence of side effects — everything an agent needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (run_id format and expected_revision semantics fully documented in the schema), so the baseline is 3. The description adds nothing about parameter semantics beyond the schema, but does not need to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (extend/renew) on a specific resource (active session's TTL/lease), with the scope of the change bounded ('changes only the lease, without advancing a profile or workflow revision'). This distinguishes it cleanly from sibling advance_qa_orchestration and finish_qa_orchestration without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the trigger condition ('while host review work is running', 'renew before expires_at') and enumerates the eligible states (active primary/deep/synthesis, awaiting-host-outcome) versus the ineligible ones (terminal or expired). It does not explicitly name a sibling alternative, but it implicitly routes the agent away from advance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_qa_orchestrationA
Create a QA session; optionally bind it to one immutable review input.
Every call creates a separate session. Use prepare_qa_orchestration for a stateless profile
checklist. task_type narrows the bundle shortlist; the host still selects the review route.
For an auditable code review, pass review_context with the exact source and evidence packet
identifiers. The server stores the identifiers and submitted report fields, not the raw diff or full Evidence Packet.
Sessions expire after the configured TTL (1800 seconds by default).
Capacity is 100 sessions by default and can be configured.
Expired sessions are purged and retained terminal sessions may be evicted. If capacity can only be freed by removing an active session, the call returns a
session limiterror.
| Name | Required | Description | Default |
|---|---|---|---|
| task_type | Yes | Broad request category: ordinary_review for implementation review, widget_review for widget changes, epic_analysis for broad exploration, requirements_analysis for requirement review, qa_planning for coverage planning, autotest_implementation for automation work, or other. This affects recommended_bundles only; the host chooses the route from changed files and evidence; it is not a risk level. | |
| review_context | No | Optional immutable repository, base/head, changed-file, diff, and Evidence Packet identity. When supplied, every completed profile must include a structured report whose evidence references belong to this packet; completed outcomes require a final report. The response may include file-type-based recommended_profiles as non-binding hints. Optional evidence_registry metadata binds each ref to a source kind, revision, coordinates and content hash. The host verifies actual content locally. |
Output Schema
| Name | Required | Description |
|---|---|---|
| run_id | Yes | |
| status | Yes | |
| revision | No | Workflow revision for conditional writes. |
| read_only | No | |
| task_type | Yes | |
| expires_at | Yes | |
| next_action | Yes | |
| current_step | Yes | |
| model_policy | No | |
| risk_signals | No | |
| review_context | No | |
| allowed_bundles | No | |
| current_profile | No | |
| deep_assessment | No | |
| profile_reports | No | |
| review_profiles | No | |
| selected_bundle | No | |
| allowed_profiles | No | |
| deep_reason_code | No | |
| selected_profile | No | |
| completed_profiles | No | |
| final_review_report | No | |
| host_owns_decisions | No | |
| recommended_bundles | No | |
| transition_receipts | No | Bounded request hashes for safe replay; no raw transition payloads are stored. |
| recommended_profiles | No | File-type-based profile hints only; the host selects the route. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety/idempotency profile; the description adds substantial operational context they do not: session TTL (1800s default), default capacity of 100, purge of expired sessions, eviction of retained terminal sessions, and a named failure mode ("session limit" error). It also discloses the storage boundary — identifiers and report fields are persisted, not the raw diff or full Evidence Packet.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then a short purpose/alternative comparison, then three tight bullets for limits and failure modes. Slightly redundant with the schema on task_type's effect ("the host still selects the review route"), but every other sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter session-creation tool with an output schema already present, this covers what the schema and annotations cannot: lifecycle, capacity, eviction behavior, the session-limit failure, and the persistence boundary. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: it clarifies that task_type only narrows the bundle shortlist while the host selects the route, and that review_context should carry exact source/evidence identifiers for an auditable review. The task_type wording largely duplicates the schema text, which keeps this from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Create a QA session") plus the key scoping fact ("Every call creates a separate session"), and explicitly separates it from the sibling prepare_qa_orchestration ("stateless profile checklist"). An agent can pick between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative tool and the condition that selects it (stateless checklist vs. stateful session), and gives a concrete when-to-pass rule for the optional parameter ("For an auditable code review, pass review_context with the exact source and evidence packet identifiers"). Guidance is explicit rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.2.11- Changed
advance_qa_orchestration8 fields changed- changed
Input schema / properties / profile_reports / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": false, - "description": "Structured host-reported result for one completed specialist profile.", - "properties": { - "coverage_gaps": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "evidence_map": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "description": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - }, - "evidence_ref": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - } - }, - "required": [ - "evidence_ref", - "description" - ], - "type": "object" - }, - "maxItems": 500, - "type": "array" - }, - "execution_metrics": { - "anyOf": [ - { - "additionalProperties": false, - "description": "Optional host-reported timing and token counts for one completed profile.", - "properties": { - "attempt_count": { - "default": 1, - "maximum": 4, - "minimum": 1, - "type": "integer" - }, - "completed_at": { - "format": "date-time", - "type": "string" - }, - "input_tokens": { - "anyOf": [ - { - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "output_tokens": { - "anyOf": [ - { - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "started_at": { - "format": "date-time", - "type": "string" - } - }, - "required": [ - "started_at", - "completed_at" - ], - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Optional host-reported execution data; the orchestrator does not verify it." - }, - "finding_candidates": { - "default": [], - "items": { - "additionalProperties": false, - "description": "A possible defect with evidence references; the host still decides whether it is confirmed.", - "properties": { - "affected_area": { - "anyOf": [ - { - "maxLength": 256, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Affected user flow or system area, when supported by the evidence." - }, - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "confidence": { - "enum": [ - "high", - "medium", - "low" - ], - "type": "string" - }, - "description": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "minItems": 1, - "type": "array" - }, - "impact": { - "anyOf": [ - { - "maxLength": 2000, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Concrete effect on users or contracts; severity remains host-owned." - }, - "source_locations": { - "default": [], - "description": "Precise source locations supporting this candidate when available.", - "items": { - "additionalProperties": false, - "description": "A stable source locator for a finding candidate.", - "properties": { - "end_line": { - "anyOf": [ - { - "minimum": 1, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "path": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "start_line": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "path", - "start_line" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - }, - "title": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "verification_gap": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "candidate_id", - "title", - "description", - "confidence", - "verification_gap", - "evidence_refs" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "profile": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "scope": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - }, - "unverified": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - } - }, - "required": [ - "profile", - "scope" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": false, + "description": "Structured host-reported result for one completed specialist profile.", + "properties": { + "context_selection": { + "anyOf": [ + { + "additionalProperties": false, + "description": "Host assertion of the exact subset actually sent to a profile.", + "properties": { + "budget_omitted_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "type": "array" + }, + "included_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "type": "array" + }, + "max_bytes": { + "maximum": 2000000, + "minimum": 1, + "type": "integer" + }, + "omitted_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "type": "array" + }, + "selected_bytes": { + "maximum": 2000000, + "minimum": 0, + "type": "integer" + }, + "selected_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "source_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + } + }, + "required": [ + "source_packet_sha256", + "selected_packet_sha256", + "included_refs", + "max_bytes", + "selected_bytes" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + }, + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "evidence_map": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "description": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "evidence_ref": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + } + }, + "required": [ + "evidence_ref", + "description" + ], + "type": "object" + }, + "maxItems": 500, + "type": "array" + }, + "execution_metrics": { + "anyOf": [ + { + "additionalProperties": false, + "description": "Optional host-reported timing and token counts for one completed profile.", + "properties": { + "attempt_count": { + "default": 1, + "maximum": 4, + "minimum": 1, + "type": "integer" + }, + "attempts": { + "default": [], + "items": { + "additionalProperties": false, + "description": "One actual executor call; no exception bodies or source content.", + "properties": { + "attempt": { + "maximum": 4, + "minimum": 1, + "type": "integer" + }, + "cached_input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "completed_at": { + "format": "date-time", + "type": "string" + }, + "executor_seconds": { + "minimum": 0, + "type": "number" + }, + "input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "model_seconds": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "outcome": { + "enum": [ + "completed", + "retryable_error", + "timeout", + "failed", + "cancelled" + ], + "type": "string" + }, + "output_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "preparation_seconds": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "queue_seconds": { + "minimum": 0, + "type": "number" + }, + "started_at": { + "format": "date-time", + "type": "string" + }, + "validation_seconds": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "profile", + "attempt", + "outcome", + "started_at", + "completed_at", + "queue_seconds", + "executor_seconds" + ], + "type": "object" + }, + "maxItems": 4, + "type": "array" + }, + "completed_at": { + "format": "date-time", + "type": "string" + }, + "input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "output_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "started_at": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "started_at", + "completed_at" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional host-reported execution data; the orchestrator does not verify it." + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "description": "A possible defect with evidence references; the host still decides whether it is confirmed.", + "properties": { + "affected_area": { + "anyOf": [ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Affected user flow or system area, when supported by the evidence." + }, + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "failure_condition": { + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Specific preconditions that make the alleged failure occur." + }, + "flip_condition": { + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete source/contract evidence that would refute this candidate." + }, + "impact": { + "anyOf": [ + { + "maxLength": 2000, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete effect on users or contracts; severity remains host-owned." + }, + "source_locations": { + "default": [], + "description": "Precise source locations supporting this candidate when available.", + "items": { + "additionalProperties": false, + "description": "A stable source locator for a finding candidate.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "start_line": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "path", + "start_line" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "review_rules_sha256": { + "anyOf": [ + { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "scope": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "profile", + "scope" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - changed
Output schema / properties / final_review_report / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Structured synthesis stored with a review-bound orchestration session.", - "properties": { - "candidate_decisions": { - "default": [], - "description": "One host decision per submitted candidate; absent on legacy saved reports.", - "items": { - "additionalProperties": false, - "description": "The host's disposition of one profile-local candidate.", - "properties": { - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "minItems": 1, - "type": "array" - }, - "final_finding_id": { - "anyOf": [ - { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "rationale": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - }, - "source": { - "additionalProperties": false, - "description": "A profile-local candidate that contributed to one synthesized finding.", - "properties": { - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "profile": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - } - }, - "required": [ - "profile", - "candidate_id" - ], - "type": "object" - }, - "verdict": { - "enum": [ - "confirmed", - "rejected", - "duplicate", - "unverified" - ], - "type": "string" - } - }, - "required": [ - "source", - "verdict", - "rationale", - "evidence_refs" - ], - "type": "object" - }, - "maxItems": 1000, - "type": "array" - }, - "coverage_gaps": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "finding_candidates": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "affected_area": { - "anyOf": [ - { - "maxLength": 256, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Affected user flow or system area, when supported by the evidence." - }, - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "confidence": { - "enum": [ - "high", - "medium", - "low" - ], - "type": "string" - }, - "description": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "minItems": 1, - "type": "array" - }, - "impact": { - "anyOf": [ - { - "maxLength": 2000, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Concrete effect on users or contracts; severity remains host-owned." - }, - "severity": { - "anyOf": [ - { - "enum": [ - "high", - "medium", - "low" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Impact severity selected by the host for a confirmed finding." - }, - "source_candidates": { - "default": [], - "description": "Required for new final reports; empty only on reports persisted before source linkage.", - "items": { - "additionalProperties": false, - "description": "A profile-local candidate that contributed to one synthesized finding.", - "properties": { - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "profile": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - } - }, - "required": [ - "profile", - "candidate_id" - ], - "type": "object" - }, - "type": "array" - }, - "source_locations": { - "default": [], - "description": "Precise source locations supporting this candidate when available.", - "items": { - "additionalProperties": false, - "description": "A stable source locator for a finding candidate.", - "properties": { - "end_line": { - "anyOf": [ - { - "minimum": 1, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "path": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "start_line": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "path", - "start_line" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - }, - "source_profiles": { - "items": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "title": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "verification_gap": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "candidate_id", - "title", - "description", - "confidence", - "verification_gap", - "evidence_refs", - "source_profiles" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "profiles_reviewed": { - "items": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "summary": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "unverified": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - } - }, - "required": [ - "summary", - "profiles_reviewed" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Structured synthesis stored with a review-bound orchestration session.", + "properties": { + "candidate_decisions": { + "default": [], + "description": "One host decision per submitted candidate; absent on legacy saved reports.", + "items": { + "additionalProperties": false, + "description": "The host's disposition of one profile-local candidate.", + "properties": { + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "final_finding_id": { + "anyOf": [ + { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "refutation": { + "anyOf": [ + { + "additionalProperties": false, + "description": "Host's evidence-backed assessment, not a vote or proof of another agent's execution.", + "properties": { + "candidate_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "context_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "status": { + "enum": [ + "refuted", + "not_refuted", + "unverified" + ], + "type": "string" + } + }, + "required": [ + "context_sha256", + "candidate_sha256", + "status", + "rationale", + "evidence_refs" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + }, + "source": { + "additionalProperties": false, + "description": "A profile-local candidate that contributed to one synthesized finding.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + } + }, + "required": [ + "profile", + "candidate_id" + ], + "type": "object" + }, + "verdict": { + "enum": [ + "confirmed", + "rejected", + "duplicate", + "unverified" + ], + "type": "string" + } + }, + "required": [ + "source", + "verdict", + "rationale", + "evidence_refs" + ], + "type": "object" + }, + "maxItems": 1000, + "type": "array" + }, + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "affected_area": { + "anyOf": [ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Affected user flow or system area, when supported by the evidence." + }, + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "failure_condition": { + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Specific preconditions that make the alleged failure occur." + }, + "flip_condition": { + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete source/contract evidence that would refute this candidate." + }, + "impact": { + "anyOf": [ + { + "maxLength": 2000, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete effect on users or contracts; severity remains host-owned." + }, + "severity": { + "anyOf": [ + { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Impact severity selected by the host for a confirmed finding." + }, + "source_candidates": { + "default": [], + "description": "Required for new final reports; empty only on reports persisted before source linkage.", + "items": { + "additionalProperties": false, + "description": "A profile-local candidate that contributed to one synthesized finding.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + } + }, + "required": [ + "profile", + "candidate_id" + ], + "type": "object" + }, + "type": "array" + }, + "source_locations": { + "default": [], + "description": "Precise source locations supporting this candidate when available.", + "items": { + "additionalProperties": false, + "description": "A stable source locator for a finding candidate.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "start_line": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "path", + "start_line" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "source_profiles": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs", + "source_profiles" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profiles_reviewed": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "review_rules_sha256": { + "anyOf": [ + { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "summary": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "summary", + "profiles_reviewed" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / profile_reports / items / properties / context_selectionAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Host assertion of the exact subset actually sent to a profile.", + "properties": { + "budget_omitted_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "type": "array" + }, + "included_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "type": "array" + }, + "max_bytes": { + "maximum": 2000000, + "minimum": 1, + "type": "integer" + }, + "omitted_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "type": "array" + }, + "selected_bytes": { + "maximum": 2000000, + "minimum": 0, + "type": "integer" + }, + "selected_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "source_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + } + }, + "required": [ + "source_packet_sha256", + "selected_packet_sha256", + "included_refs", + "max_bytes", + "selected_bytes" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +} - changed
Output schema / properties / profile_reports / items / properties / execution_metrics / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Optional host-reported timing and token counts for one completed profile.", - "properties": { - "attempt_count": { - "default": 1, - "maximum": 4, - "minimum": 1, - "type": "integer" - }, - "completed_at": { - "format": "date-time", - "type": "string" - }, - "input_tokens": { - "anyOf": [ - { - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "output_tokens": { - "anyOf": [ - { - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "started_at": { - "format": "date-time", - "type": "string" - } - }, - "required": [ - "started_at", - "completed_at" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Optional host-reported timing and token counts for one completed profile.", + "properties": { + "attempt_count": { + "default": 1, + "maximum": 4, + "minimum": 1, + "type": "integer" + }, + "attempts": { + "default": [], + "items": { + "additionalProperties": false, + "description": "One actual executor call; no exception bodies or source content.", + "properties": { + "attempt": { + "maximum": 4, + "minimum": 1, + "type": "integer" + }, + "cached_input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "completed_at": { + "format": "date-time", + "type": "string" + }, + "executor_seconds": { + "minimum": 0, + "type": "number" + }, + "input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "model_seconds": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "outcome": { + "enum": [ + "completed", + "retryable_error", + "timeout", + "failed", + "cancelled" + ], + "type": "string" + }, + "output_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "preparation_seconds": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "queue_seconds": { + "minimum": 0, + "type": "number" + }, + "started_at": { + "format": "date-time", + "type": "string" + }, + "validation_seconds": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "profile", + "attempt", + "outcome", + "started_at", + "completed_at", + "queue_seconds", + "executor_seconds" + ], + "type": "object" + }, + "maxItems": 4, + "type": "array" + }, + "completed_at": { + "format": "date-time", + "type": "string" + }, + "input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "output_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "started_at": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "started_at", + "completed_at" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / profile_reports / items / properties / finding_candidates / items / properties / failure_conditionAdded value: +{ + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Specific preconditions that make the alleged failure occur." +} - added
Output schema / properties / profile_reports / items / properties / finding_candidates / items / properties / flip_conditionAdded value: +{ + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete source/contract evidence that would refute this candidate." +} - added
Output schema / properties / profile_reports / items / properties / review_rules_sha256Added value: +{ + "anyOf": [ + { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - changed
Output schema / properties / review_context / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Immutable identifiers for the exact source and evidence packet reviewed.", - "properties": { - "base_sha": { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - "changed_files": { - "items": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "maxItems": 500, - "minItems": 1, - "type": "array" - }, - "diff_sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "evidence_packet_sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 1, - "type": "array" - }, - "evidence_registry": { - "default": [], - "description": "Optional complete ref-to-source registry with revision, coordinates and hashes.", - "items": { - "additionalProperties": false, - "description": "Metadata for one evidence item; raw content remains with the host.", - "properties": { - "end_line": { - "anyOf": [ - { - "minimum": 1, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "evidence_ref": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "kind": { - "enum": [ - "source", - "diff", - "requirement", - "runtime", - "other" - ], - "type": "string" - }, - "locator": { - "anyOf": [ - { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "path": { - "anyOf": [ - { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "revision": { - "anyOf": [ - { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "start_line": { - "anyOf": [ - { - "minimum": 1, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - } - }, - "required": [ - "evidence_ref", - "kind", - "sha256" - ], - "type": "object" - }, - "maxItems": 1000, - "type": "array" - }, - "head_sha": { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - "repository": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "repository", - "base_sha", - "head_sha", - "diff_sha256", - "evidence_packet_sha256", - "changed_files", - "evidence_refs" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Immutable identifiers for the exact source and evidence packet reviewed.", + "properties": { + "base_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "changed_files": { + "items": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 500, + "minItems": 1, + "type": "array" + }, + "diff_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 1, + "type": "array" + }, + "evidence_registry": { + "default": [], + "description": "Optional complete ref-to-source registry with revision, coordinates and hashes.", + "items": { + "additionalProperties": false, + "description": "Metadata for one evidence item; raw content remains with the host.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "evidence_ref": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "kind": { + "enum": [ + "source", + "diff", + "requirement", + "runtime", + "other" + ], + "type": "string" + }, + "locator": { + "anyOf": [ + { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "anyOf": [ + { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "revision": { + "anyOf": [ + { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "start_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "evidence_ref", + "kind", + "sha256" + ], + "type": "object" + }, + "maxItems": 1000, + "type": "array" + }, + "head_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "repository": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "review_rules": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "rules": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "condition": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "raise", + "guard" + ], + "type": "string" + }, + "paths": { + "items": { + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "rule_id": { + "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$", + "type": "string" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "rule_id", + "kind", + "paths", + "condition", + "text", + "rationale" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "schema_version": { + "const": 1, + "default": 1, + "type": "integer" + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "repository", + "base_sha", + "head_sha", + "diff_sha256", + "evidence_packet_sha256", + "changed_files", + "evidence_refs" + ], + "type": "object" + }, + { + "type": "null" + } +]
- Changed
finish_qa_orchestration8 fields changed- changed
Input schema / properties / final_review_report / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Structured synthesis stored with a review-bound orchestration session.", - "properties": { - "candidate_decisions": { - "default": [], - "description": "One host decision per submitted candidate; absent on legacy saved reports.", - "items": { - "additionalProperties": false, - "description": "The host's disposition of one profile-local candidate.", - "properties": { - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "minItems": 1, - "type": "array" - }, - "final_finding_id": { - "anyOf": [ - { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "rationale": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - }, - "source": { - "additionalProperties": false, - "description": "A profile-local candidate that contributed to one synthesized finding.", - "properties": { - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "profile": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - } - }, - "required": [ - "profile", - "candidate_id" - ], - "type": "object" - }, - "verdict": { - "enum": [ - "confirmed", - "rejected", - "duplicate", - "unverified" - ], - "type": "string" - } - }, - "required": [ - "source", - "verdict", - "rationale", - "evidence_refs" - ], - "type": "object" - }, - "maxItems": 1000, - "type": "array" - }, - "coverage_gaps": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "finding_candidates": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "affected_area": { - "anyOf": [ - { - "maxLength": 256, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Affected user flow or system area, when supported by the evidence." - }, - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "confidence": { - "enum": [ - "high", - "medium", - "low" - ], - "type": "string" - }, - "description": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "minItems": 1, - "type": "array" - }, - "impact": { - "anyOf": [ - { - "maxLength": 2000, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Concrete effect on users or contracts; severity remains host-owned." - }, - "severity": { - "anyOf": [ - { - "enum": [ - "high", - "medium", - "low" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Impact severity selected by the host for a confirmed finding." - }, - "source_candidates": { - "default": [], - "description": "Required for new final reports; empty only on reports persisted before source linkage.", - "items": { - "additionalProperties": false, - "description": "A profile-local candidate that contributed to one synthesized finding.", - "properties": { - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "profile": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - } - }, - "required": [ - "profile", - "candidate_id" - ], - "type": "object" - }, - "type": "array" - }, - "source_locations": { - "default": [], - "description": "Precise source locations supporting this candidate when available.", - "items": { - "additionalProperties": false, - "description": "A stable source locator for a finding candidate.", - "properties": { - "end_line": { - "anyOf": [ - { - "minimum": 1, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "path": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "start_line": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "path", - "start_line" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - }, - "source_profiles": { - "items": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "title": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "verification_gap": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "candidate_id", - "title", - "description", - "confidence", - "verification_gap", - "evidence_refs", - "source_profiles" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "profiles_reviewed": { - "items": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "summary": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "unverified": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - } - }, - "required": [ - "summary", - "profiles_reviewed" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Structured synthesis stored with a review-bound orchestration session.", + "properties": { + "candidate_decisions": { + "default": [], + "description": "One host decision per submitted candidate; absent on legacy saved reports.", + "items": { + "additionalProperties": false, + "description": "The host's disposition of one profile-local candidate.", + "properties": { + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "final_finding_id": { + "anyOf": [ + { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "refutation": { + "anyOf": [ + { + "additionalProperties": false, + "description": "Host's evidence-backed assessment, not a vote or proof of another agent's execution.", + "properties": { + "candidate_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "context_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "status": { + "enum": [ + "refuted", + "not_refuted", + "unverified" + ], + "type": "string" + } + }, + "required": [ + "context_sha256", + "candidate_sha256", + "status", + "rationale", + "evidence_refs" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + }, + "source": { + "additionalProperties": false, + "description": "A profile-local candidate that contributed to one synthesized finding.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + } + }, + "required": [ + "profile", + "candidate_id" + ], + "type": "object" + }, + "verdict": { + "enum": [ + "confirmed", + "rejected", + "duplicate", + "unverified" + ], + "type": "string" + } + }, + "required": [ + "source", + "verdict", + "rationale", + "evidence_refs" + ], + "type": "object" + }, + "maxItems": 1000, + "type": "array" + }, + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "affected_area": { + "anyOf": [ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Affected user flow or system area, when supported by the evidence." + }, + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "failure_condition": { + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Specific preconditions that make the alleged failure occur." + }, + "flip_condition": { + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete source/contract evidence that would refute this candidate." + }, + "impact": { + "anyOf": [ + { + "maxLength": 2000, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete effect on users or contracts; severity remains host-owned." + }, + "severity": { + "anyOf": [ + { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Impact severity selected by the host for a confirmed finding." + }, + "source_candidates": { + "default": [], + "description": "Required for new final reports; empty only on reports persisted before source linkage.", + "items": { + "additionalProperties": false, + "description": "A profile-local candidate that contributed to one synthesized finding.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + } + }, + "required": [ + "profile", + "candidate_id" + ], + "type": "object" + }, + "type": "array" + }, + "source_locations": { + "default": [], + "description": "Precise source locations supporting this candidate when available.", + "items": { + "additionalProperties": false, + "description": "A stable source locator for a finding candidate.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "start_line": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "path", + "start_line" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "source_profiles": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs", + "source_profiles" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profiles_reviewed": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "review_rules_sha256": { + "anyOf": [ + { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "summary": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "summary", + "profiles_reviewed" + ], + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / final_review_report / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Structured synthesis stored with a review-bound orchestration session.", - "properties": { - "candidate_decisions": { - "default": [], - "description": "One host decision per submitted candidate; absent on legacy saved reports.", - "items": { - "additionalProperties": false, - "description": "The host's disposition of one profile-local candidate.", - "properties": { - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "minItems": 1, - "type": "array" - }, - "final_finding_id": { - "anyOf": [ - { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "rationale": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - }, - "source": { - "additionalProperties": false, - "description": "A profile-local candidate that contributed to one synthesized finding.", - "properties": { - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "profile": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - } - }, - "required": [ - "profile", - "candidate_id" - ], - "type": "object" - }, - "verdict": { - "enum": [ - "confirmed", - "rejected", - "duplicate", - "unverified" - ], - "type": "string" - } - }, - "required": [ - "source", - "verdict", - "rationale", - "evidence_refs" - ], - "type": "object" - }, - "maxItems": 1000, - "type": "array" - }, - "coverage_gaps": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "finding_candidates": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "affected_area": { - "anyOf": [ - { - "maxLength": 256, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Affected user flow or system area, when supported by the evidence." - }, - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "confidence": { - "enum": [ - "high", - "medium", - "low" - ], - "type": "string" - }, - "description": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "minItems": 1, - "type": "array" - }, - "impact": { - "anyOf": [ - { - "maxLength": 2000, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Concrete effect on users or contracts; severity remains host-owned." - }, - "severity": { - "anyOf": [ - { - "enum": [ - "high", - "medium", - "low" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Impact severity selected by the host for a confirmed finding." - }, - "source_candidates": { - "default": [], - "description": "Required for new final reports; empty only on reports persisted before source linkage.", - "items": { - "additionalProperties": false, - "description": "A profile-local candidate that contributed to one synthesized finding.", - "properties": { - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "profile": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - } - }, - "required": [ - "profile", - "candidate_id" - ], - "type": "object" - }, - "type": "array" - }, - "source_locations": { - "default": [], - "description": "Precise source locations supporting this candidate when available.", - "items": { - "additionalProperties": false, - "description": "A stable source locator for a finding candidate.", - "properties": { - "end_line": { - "anyOf": [ - { - "minimum": 1, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "path": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "start_line": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "path", - "start_line" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - }, - "source_profiles": { - "items": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "title": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "verification_gap": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "candidate_id", - "title", - "description", - "confidence", - "verification_gap", - "evidence_refs", - "source_profiles" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "profiles_reviewed": { - "items": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "summary": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "unverified": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - } - }, - "required": [ - "summary", - "profiles_reviewed" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Structured synthesis stored with a review-bound orchestration session.", + "properties": { + "candidate_decisions": { + "default": [], + "description": "One host decision per submitted candidate; absent on legacy saved reports.", + "items": { + "additionalProperties": false, + "description": "The host's disposition of one profile-local candidate.", + "properties": { + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "final_finding_id": { + "anyOf": [ + { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "refutation": { + "anyOf": [ + { + "additionalProperties": false, + "description": "Host's evidence-backed assessment, not a vote or proof of another agent's execution.", + "properties": { + "candidate_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "context_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "status": { + "enum": [ + "refuted", + "not_refuted", + "unverified" + ], + "type": "string" + } + }, + "required": [ + "context_sha256", + "candidate_sha256", + "status", + "rationale", + "evidence_refs" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + }, + "source": { + "additionalProperties": false, + "description": "A profile-local candidate that contributed to one synthesized finding.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + } + }, + "required": [ + "profile", + "candidate_id" + ], + "type": "object" + }, + "verdict": { + "enum": [ + "confirmed", + "rejected", + "duplicate", + "unverified" + ], + "type": "string" + } + }, + "required": [ + "source", + "verdict", + "rationale", + "evidence_refs" + ], + "type": "object" + }, + "maxItems": 1000, + "type": "array" + }, + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "affected_area": { + "anyOf": [ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Affected user flow or system area, when supported by the evidence." + }, + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "failure_condition": { + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Specific preconditions that make the alleged failure occur." + }, + "flip_condition": { + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete source/contract evidence that would refute this candidate." + }, + "impact": { + "anyOf": [ + { + "maxLength": 2000, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete effect on users or contracts; severity remains host-owned." + }, + "severity": { + "anyOf": [ + { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Impact severity selected by the host for a confirmed finding." + }, + "source_candidates": { + "default": [], + "description": "Required for new final reports; empty only on reports persisted before source linkage.", + "items": { + "additionalProperties": false, + "description": "A profile-local candidate that contributed to one synthesized finding.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + } + }, + "required": [ + "profile", + "candidate_id" + ], + "type": "object" + }, + "type": "array" + }, + "source_locations": { + "default": [], + "description": "Precise source locations supporting this candidate when available.", + "items": { + "additionalProperties": false, + "description": "A stable source locator for a finding candidate.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "start_line": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "path", + "start_line" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "source_profiles": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs", + "source_profiles" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profiles_reviewed": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "review_rules_sha256": { + "anyOf": [ + { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "summary": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "summary", + "profiles_reviewed" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / profile_reports / items / properties / context_selectionAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Host assertion of the exact subset actually sent to a profile.", + "properties": { + "budget_omitted_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "type": "array" + }, + "included_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "type": "array" + }, + "max_bytes": { + "maximum": 2000000, + "minimum": 1, + "type": "integer" + }, + "omitted_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "type": "array" + }, + "selected_bytes": { + "maximum": 2000000, + "minimum": 0, + "type": "integer" + }, + "selected_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "source_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + } + }, + "required": [ + "source_packet_sha256", + "selected_packet_sha256", + "included_refs", + "max_bytes", + "selected_bytes" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +} - changed
Output schema / properties / profile_reports / items / properties / execution_metrics / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Optional host-reported timing and token counts for one completed profile.", - "properties": { - "attempt_count": { - "default": 1, - "maximum": 4, - "minimum": 1, - "type": "integer" - }, - "completed_at": { - "format": "date-time", - "type": "string" - }, - "input_tokens": { - "anyOf": [ - { - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "output_tokens": { - "anyOf": [ - { - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "started_at": { - "format": "date-time", - "type": "string" - } - }, - "required": [ - "started_at", - "completed_at" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Optional host-reported timing and token counts for one completed profile.", + "properties": { + "attempt_count": { + "default": 1, + "maximum": 4, + "minimum": 1, + "type": "integer" + }, + "attempts": { + "default": [], + "items": { + "additionalProperties": false, + "description": "One actual executor call; no exception bodies or source content.", + "properties": { + "attempt": { + "maximum": 4, + "minimum": 1, + "type": "integer" + }, + "cached_input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "completed_at": { + "format": "date-time", + "type": "string" + }, + "executor_seconds": { + "minimum": 0, + "type": "number" + }, + "input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "model_seconds": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "outcome": { + "enum": [ + "completed", + "retryable_error", + "timeout", + "failed", + "cancelled" + ], + "type": "string" + }, + "output_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "preparation_seconds": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "queue_seconds": { + "minimum": 0, + "type": "number" + }, + "started_at": { + "format": "date-time", + "type": "string" + }, + "validation_seconds": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "profile", + "attempt", + "outcome", + "started_at", + "completed_at", + "queue_seconds", + "executor_seconds" + ], + "type": "object" + }, + "maxItems": 4, + "type": "array" + }, + "completed_at": { + "format": "date-time", + "type": "string" + }, + "input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "output_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "started_at": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "started_at", + "completed_at" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / profile_reports / items / properties / finding_candidates / items / properties / failure_conditionAdded value: +{ + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Specific preconditions that make the alleged failure occur." +} - added
Output schema / properties / profile_reports / items / properties / finding_candidates / items / properties / flip_conditionAdded value: +{ + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete source/contract evidence that would refute this candidate." +} - added
Output schema / properties / profile_reports / items / properties / review_rules_sha256Added value: +{ + "anyOf": [ + { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - changed
Output schema / properties / review_context / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Immutable identifiers for the exact source and evidence packet reviewed.", - "properties": { - "base_sha": { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - "changed_files": { - "items": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "maxItems": 500, - "minItems": 1, - "type": "array" - }, - "diff_sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "evidence_packet_sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 1, - "type": "array" - }, - "evidence_registry": { - "default": [], - "description": "Optional complete ref-to-source registry with revision, coordinates and hashes.", - "items": { - "additionalProperties": false, - "description": "Metadata for one evidence item; raw content remains with the host.", - "properties": { - "end_line": { - "anyOf": [ - { - "minimum": 1, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "evidence_ref": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "kind": { - "enum": [ - "source", - "diff", - "requirement", - "runtime", - "other" - ], - "type": "string" - }, - "locator": { - "anyOf": [ - { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "path": { - "anyOf": [ - { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "revision": { - "anyOf": [ - { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "start_line": { - "anyOf": [ - { - "minimum": 1, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - } - }, - "required": [ - "evidence_ref", - "kind", - "sha256" - ], - "type": "object" - }, - "maxItems": 1000, - "type": "array" - }, - "head_sha": { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - "repository": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "repository", - "base_sha", - "head_sha", - "diff_sha256", - "evidence_packet_sha256", - "changed_files", - "evidence_refs" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Immutable identifiers for the exact source and evidence packet reviewed.", + "properties": { + "base_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "changed_files": { + "items": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 500, + "minItems": 1, + "type": "array" + }, + "diff_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 1, + "type": "array" + }, + "evidence_registry": { + "default": [], + "description": "Optional complete ref-to-source registry with revision, coordinates and hashes.", + "items": { + "additionalProperties": false, + "description": "Metadata for one evidence item; raw content remains with the host.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "evidence_ref": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "kind": { + "enum": [ + "source", + "diff", + "requirement", + "runtime", + "other" + ], + "type": "string" + }, + "locator": { + "anyOf": [ + { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "anyOf": [ + { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "revision": { + "anyOf": [ + { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "start_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "evidence_ref", + "kind", + "sha256" + ], + "type": "object" + }, + "maxItems": 1000, + "type": "array" + }, + "head_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "repository": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "review_rules": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "rules": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "condition": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "raise", + "guard" + ], + "type": "string" + }, + "paths": { + "items": { + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "rule_id": { + "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$", + "type": "string" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "rule_id", + "kind", + "paths", + "condition", + "text", + "rationale" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "schema_version": { + "const": 1, + "default": 1, + "type": "integer" + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "repository", + "base_sha", + "head_sha", + "diff_sha256", + "evidence_packet_sha256", + "changed_files", + "evidence_refs" + ], + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_qa_orchestration7 fields changed- changed
Output schema / properties / final_review_report / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Structured synthesis stored with a review-bound orchestration session.", - "properties": { - "candidate_decisions": { - "default": [], - "description": "One host decision per submitted candidate; absent on legacy saved reports.", - "items": { - "additionalProperties": false, - "description": "The host's disposition of one profile-local candidate.", - "properties": { - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "minItems": 1, - "type": "array" - }, - "final_finding_id": { - "anyOf": [ - { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "rationale": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - }, - "source": { - "additionalProperties": false, - "description": "A profile-local candidate that contributed to one synthesized finding.", - "properties": { - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "profile": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - } - }, - "required": [ - "profile", - "candidate_id" - ], - "type": "object" - }, - "verdict": { - "enum": [ - "confirmed", - "rejected", - "duplicate", - "unverified" - ], - "type": "string" - } - }, - "required": [ - "source", - "verdict", - "rationale", - "evidence_refs" - ], - "type": "object" - }, - "maxItems": 1000, - "type": "array" - }, - "coverage_gaps": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "finding_candidates": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "affected_area": { - "anyOf": [ - { - "maxLength": 256, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Affected user flow or system area, when supported by the evidence." - }, - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "confidence": { - "enum": [ - "high", - "medium", - "low" - ], - "type": "string" - }, - "description": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "minItems": 1, - "type": "array" - }, - "impact": { - "anyOf": [ - { - "maxLength": 2000, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Concrete effect on users or contracts; severity remains host-owned." - }, - "severity": { - "anyOf": [ - { - "enum": [ - "high", - "medium", - "low" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Impact severity selected by the host for a confirmed finding." - }, - "source_candidates": { - "default": [], - "description": "Required for new final reports; empty only on reports persisted before source linkage.", - "items": { - "additionalProperties": false, - "description": "A profile-local candidate that contributed to one synthesized finding.", - "properties": { - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "profile": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - } - }, - "required": [ - "profile", - "candidate_id" - ], - "type": "object" - }, - "type": "array" - }, - "source_locations": { - "default": [], - "description": "Precise source locations supporting this candidate when available.", - "items": { - "additionalProperties": false, - "description": "A stable source locator for a finding candidate.", - "properties": { - "end_line": { - "anyOf": [ - { - "minimum": 1, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "path": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "start_line": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "path", - "start_line" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - }, - "source_profiles": { - "items": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "title": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "verification_gap": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "candidate_id", - "title", - "description", - "confidence", - "verification_gap", - "evidence_refs", - "source_profiles" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "profiles_reviewed": { - "items": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "summary": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "unverified": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - } - }, - "required": [ - "summary", - "profiles_reviewed" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Structured synthesis stored with a review-bound orchestration session.", + "properties": { + "candidate_decisions": { + "default": [], + "description": "One host decision per submitted candidate; absent on legacy saved reports.", + "items": { + "additionalProperties": false, + "description": "The host's disposition of one profile-local candidate.", + "properties": { + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "final_finding_id": { + "anyOf": [ + { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "refutation": { + "anyOf": [ + { + "additionalProperties": false, + "description": "Host's evidence-backed assessment, not a vote or proof of another agent's execution.", + "properties": { + "candidate_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "context_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "status": { + "enum": [ + "refuted", + "not_refuted", + "unverified" + ], + "type": "string" + } + }, + "required": [ + "context_sha256", + "candidate_sha256", + "status", + "rationale", + "evidence_refs" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + }, + "source": { + "additionalProperties": false, + "description": "A profile-local candidate that contributed to one synthesized finding.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + } + }, + "required": [ + "profile", + "candidate_id" + ], + "type": "object" + }, + "verdict": { + "enum": [ + "confirmed", + "rejected", + "duplicate", + "unverified" + ], + "type": "string" + } + }, + "required": [ + "source", + "verdict", + "rationale", + "evidence_refs" + ], + "type": "object" + }, + "maxItems": 1000, + "type": "array" + }, + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "affected_area": { + "anyOf": [ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Affected user flow or system area, when supported by the evidence." + }, + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "failure_condition": { + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Specific preconditions that make the alleged failure occur." + }, + "flip_condition": { + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete source/contract evidence that would refute this candidate." + }, + "impact": { + "anyOf": [ + { + "maxLength": 2000, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete effect on users or contracts; severity remains host-owned." + }, + "severity": { + "anyOf": [ + { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Impact severity selected by the host for a confirmed finding." + }, + "source_candidates": { + "default": [], + "description": "Required for new final reports; empty only on reports persisted before source linkage.", + "items": { + "additionalProperties": false, + "description": "A profile-local candidate that contributed to one synthesized finding.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + } + }, + "required": [ + "profile", + "candidate_id" + ], + "type": "object" + }, + "type": "array" + }, + "source_locations": { + "default": [], + "description": "Precise source locations supporting this candidate when available.", + "items": { + "additionalProperties": false, + "description": "A stable source locator for a finding candidate.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "start_line": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "path", + "start_line" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "source_profiles": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs", + "source_profiles" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profiles_reviewed": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "review_rules_sha256": { + "anyOf": [ + { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "summary": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "summary", + "profiles_reviewed" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / profile_reports / items / properties / context_selectionAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Host assertion of the exact subset actually sent to a profile.", + "properties": { + "budget_omitted_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "type": "array" + }, + "included_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "type": "array" + }, + "max_bytes": { + "maximum": 2000000, + "minimum": 1, + "type": "integer" + }, + "omitted_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "type": "array" + }, + "selected_bytes": { + "maximum": 2000000, + "minimum": 0, + "type": "integer" + }, + "selected_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "source_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + } + }, + "required": [ + "source_packet_sha256", + "selected_packet_sha256", + "included_refs", + "max_bytes", + "selected_bytes" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +} - changed
Output schema / properties / profile_reports / items / properties / execution_metrics / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Optional host-reported timing and token counts for one completed profile.", - "properties": { - "attempt_count": { - "default": 1, - "maximum": 4, - "minimum": 1, - "type": "integer" - }, - "completed_at": { - "format": "date-time", - "type": "string" - }, - "input_tokens": { - "anyOf": [ - { - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "output_tokens": { - "anyOf": [ - { - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "started_at": { - "format": "date-time", - "type": "string" - } - }, - "required": [ - "started_at", - "completed_at" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Optional host-reported timing and token counts for one completed profile.", + "properties": { + "attempt_count": { + "default": 1, + "maximum": 4, + "minimum": 1, + "type": "integer" + }, + "attempts": { + "default": [], + "items": { + "additionalProperties": false, + "description": "One actual executor call; no exception bodies or source content.", + "properties": { + "attempt": { + "maximum": 4, + "minimum": 1, + "type": "integer" + }, + "cached_input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "completed_at": { + "format": "date-time", + "type": "string" + }, + "executor_seconds": { + "minimum": 0, + "type": "number" + }, + "input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "model_seconds": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "outcome": { + "enum": [ + "completed", + "retryable_error", + "timeout", + "failed", + "cancelled" + ], + "type": "string" + }, + "output_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "preparation_seconds": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "queue_seconds": { + "minimum": 0, + "type": "number" + }, + "started_at": { + "format": "date-time", + "type": "string" + }, + "validation_seconds": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "profile", + "attempt", + "outcome", + "started_at", + "completed_at", + "queue_seconds", + "executor_seconds" + ], + "type": "object" + }, + "maxItems": 4, + "type": "array" + }, + "completed_at": { + "format": "date-time", + "type": "string" + }, + "input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "output_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "started_at": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "started_at", + "completed_at" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / profile_reports / items / properties / finding_candidates / items / properties / failure_conditionAdded value: +{ + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Specific preconditions that make the alleged failure occur." +} - added
Output schema / properties / profile_reports / items / properties / finding_candidates / items / properties / flip_conditionAdded value: +{ + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete source/contract evidence that would refute this candidate." +} - added
Output schema / properties / profile_reports / items / properties / review_rules_sha256Added value: +{ + "anyOf": [ + { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - changed
Output schema / properties / review_context / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Immutable identifiers for the exact source and evidence packet reviewed.", - "properties": { - "base_sha": { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - "changed_files": { - "items": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "maxItems": 500, - "minItems": 1, - "type": "array" - }, - "diff_sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "evidence_packet_sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 1, - "type": "array" - }, - "evidence_registry": { - "default": [], - "description": "Optional complete ref-to-source registry with revision, coordinates and hashes.", - "items": { - "additionalProperties": false, - "description": "Metadata for one evidence item; raw content remains with the host.", - "properties": { - "end_line": { - "anyOf": [ - { - "minimum": 1, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "evidence_ref": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "kind": { - "enum": [ - "source", - "diff", - "requirement", - "runtime", - "other" - ], - "type": "string" - }, - "locator": { - "anyOf": [ - { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "path": { - "anyOf": [ - { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "revision": { - "anyOf": [ - { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "start_line": { - "anyOf": [ - { - "minimum": 1, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - } - }, - "required": [ - "evidence_ref", - "kind", - "sha256" - ], - "type": "object" - }, - "maxItems": 1000, - "type": "array" - }, - "head_sha": { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - "repository": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "repository", - "base_sha", - "head_sha", - "diff_sha256", - "evidence_packet_sha256", - "changed_files", - "evidence_refs" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Immutable identifiers for the exact source and evidence packet reviewed.", + "properties": { + "base_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "changed_files": { + "items": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 500, + "minItems": 1, + "type": "array" + }, + "diff_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 1, + "type": "array" + }, + "evidence_registry": { + "default": [], + "description": "Optional complete ref-to-source registry with revision, coordinates and hashes.", + "items": { + "additionalProperties": false, + "description": "Metadata for one evidence item; raw content remains with the host.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "evidence_ref": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "kind": { + "enum": [ + "source", + "diff", + "requirement", + "runtime", + "other" + ], + "type": "string" + }, + "locator": { + "anyOf": [ + { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "anyOf": [ + { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "revision": { + "anyOf": [ + { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "start_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "evidence_ref", + "kind", + "sha256" + ], + "type": "object" + }, + "maxItems": 1000, + "type": "array" + }, + "head_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "repository": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "review_rules": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "rules": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "condition": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "raise", + "guard" + ], + "type": "string" + }, + "paths": { + "items": { + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "rule_id": { + "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$", + "type": "string" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "rule_id", + "kind", + "paths", + "condition", + "text", + "rationale" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "schema_version": { + "const": 1, + "default": 1, + "type": "integer" + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "repository", + "base_sha", + "head_sha", + "diff_sha256", + "evidence_packet_sha256", + "changed_files", + "evidence_refs" + ], + "type": "object" + }, + { + "type": "null" + } +]
- Changed
renew_qa_orchestration7 fields changed- changed
Output schema / properties / final_review_report / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Structured synthesis stored with a review-bound orchestration session.", - "properties": { - "candidate_decisions": { - "default": [], - "description": "One host decision per submitted candidate; absent on legacy saved reports.", - "items": { - "additionalProperties": false, - "description": "The host's disposition of one profile-local candidate.", - "properties": { - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "minItems": 1, - "type": "array" - }, - "final_finding_id": { - "anyOf": [ - { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "rationale": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - }, - "source": { - "additionalProperties": false, - "description": "A profile-local candidate that contributed to one synthesized finding.", - "properties": { - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "profile": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - } - }, - "required": [ - "profile", - "candidate_id" - ], - "type": "object" - }, - "verdict": { - "enum": [ - "confirmed", - "rejected", - "duplicate", - "unverified" - ], - "type": "string" - } - }, - "required": [ - "source", - "verdict", - "rationale", - "evidence_refs" - ], - "type": "object" - }, - "maxItems": 1000, - "type": "array" - }, - "coverage_gaps": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "finding_candidates": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "affected_area": { - "anyOf": [ - { - "maxLength": 256, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Affected user flow or system area, when supported by the evidence." - }, - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "confidence": { - "enum": [ - "high", - "medium", - "low" - ], - "type": "string" - }, - "description": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "minItems": 1, - "type": "array" - }, - "impact": { - "anyOf": [ - { - "maxLength": 2000, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Concrete effect on users or contracts; severity remains host-owned." - }, - "severity": { - "anyOf": [ - { - "enum": [ - "high", - "medium", - "low" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Impact severity selected by the host for a confirmed finding." - }, - "source_candidates": { - "default": [], - "description": "Required for new final reports; empty only on reports persisted before source linkage.", - "items": { - "additionalProperties": false, - "description": "A profile-local candidate that contributed to one synthesized finding.", - "properties": { - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "profile": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - } - }, - "required": [ - "profile", - "candidate_id" - ], - "type": "object" - }, - "type": "array" - }, - "source_locations": { - "default": [], - "description": "Precise source locations supporting this candidate when available.", - "items": { - "additionalProperties": false, - "description": "A stable source locator for a finding candidate.", - "properties": { - "end_line": { - "anyOf": [ - { - "minimum": 1, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "path": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "start_line": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "path", - "start_line" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - }, - "source_profiles": { - "items": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "title": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "verification_gap": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "candidate_id", - "title", - "description", - "confidence", - "verification_gap", - "evidence_refs", - "source_profiles" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "profiles_reviewed": { - "items": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "summary": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "unverified": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - } - }, - "required": [ - "summary", - "profiles_reviewed" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Structured synthesis stored with a review-bound orchestration session.", + "properties": { + "candidate_decisions": { + "default": [], + "description": "One host decision per submitted candidate; absent on legacy saved reports.", + "items": { + "additionalProperties": false, + "description": "The host's disposition of one profile-local candidate.", + "properties": { + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "final_finding_id": { + "anyOf": [ + { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "refutation": { + "anyOf": [ + { + "additionalProperties": false, + "description": "Host's evidence-backed assessment, not a vote or proof of another agent's execution.", + "properties": { + "candidate_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "context_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "status": { + "enum": [ + "refuted", + "not_refuted", + "unverified" + ], + "type": "string" + } + }, + "required": [ + "context_sha256", + "candidate_sha256", + "status", + "rationale", + "evidence_refs" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + }, + "source": { + "additionalProperties": false, + "description": "A profile-local candidate that contributed to one synthesized finding.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + } + }, + "required": [ + "profile", + "candidate_id" + ], + "type": "object" + }, + "verdict": { + "enum": [ + "confirmed", + "rejected", + "duplicate", + "unverified" + ], + "type": "string" + } + }, + "required": [ + "source", + "verdict", + "rationale", + "evidence_refs" + ], + "type": "object" + }, + "maxItems": 1000, + "type": "array" + }, + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "affected_area": { + "anyOf": [ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Affected user flow or system area, when supported by the evidence." + }, + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "failure_condition": { + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Specific preconditions that make the alleged failure occur." + }, + "flip_condition": { + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete source/contract evidence that would refute this candidate." + }, + "impact": { + "anyOf": [ + { + "maxLength": 2000, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete effect on users or contracts; severity remains host-owned." + }, + "severity": { + "anyOf": [ + { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Impact severity selected by the host for a confirmed finding." + }, + "source_candidates": { + "default": [], + "description": "Required for new final reports; empty only on reports persisted before source linkage.", + "items": { + "additionalProperties": false, + "description": "A profile-local candidate that contributed to one synthesized finding.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + } + }, + "required": [ + "profile", + "candidate_id" + ], + "type": "object" + }, + "type": "array" + }, + "source_locations": { + "default": [], + "description": "Precise source locations supporting this candidate when available.", + "items": { + "additionalProperties": false, + "description": "A stable source locator for a finding candidate.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "start_line": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "path", + "start_line" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "source_profiles": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs", + "source_profiles" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profiles_reviewed": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "review_rules_sha256": { + "anyOf": [ + { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "summary": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "summary", + "profiles_reviewed" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / profile_reports / items / properties / context_selectionAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Host assertion of the exact subset actually sent to a profile.", + "properties": { + "budget_omitted_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "type": "array" + }, + "included_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "type": "array" + }, + "max_bytes": { + "maximum": 2000000, + "minimum": 1, + "type": "integer" + }, + "omitted_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "type": "array" + }, + "selected_bytes": { + "maximum": 2000000, + "minimum": 0, + "type": "integer" + }, + "selected_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "source_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + } + }, + "required": [ + "source_packet_sha256", + "selected_packet_sha256", + "included_refs", + "max_bytes", + "selected_bytes" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +} - changed
Output schema / properties / profile_reports / items / properties / execution_metrics / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Optional host-reported timing and token counts for one completed profile.", - "properties": { - "attempt_count": { - "default": 1, - "maximum": 4, - "minimum": 1, - "type": "integer" - }, - "completed_at": { - "format": "date-time", - "type": "string" - }, - "input_tokens": { - "anyOf": [ - { - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "output_tokens": { - "anyOf": [ - { - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "started_at": { - "format": "date-time", - "type": "string" - } - }, - "required": [ - "started_at", - "completed_at" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Optional host-reported timing and token counts for one completed profile.", + "properties": { + "attempt_count": { + "default": 1, + "maximum": 4, + "minimum": 1, + "type": "integer" + }, + "attempts": { + "default": [], + "items": { + "additionalProperties": false, + "description": "One actual executor call; no exception bodies or source content.", + "properties": { + "attempt": { + "maximum": 4, + "minimum": 1, + "type": "integer" + }, + "cached_input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "completed_at": { + "format": "date-time", + "type": "string" + }, + "executor_seconds": { + "minimum": 0, + "type": "number" + }, + "input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "model_seconds": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "outcome": { + "enum": [ + "completed", + "retryable_error", + "timeout", + "failed", + "cancelled" + ], + "type": "string" + }, + "output_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "preparation_seconds": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "queue_seconds": { + "minimum": 0, + "type": "number" + }, + "started_at": { + "format": "date-time", + "type": "string" + }, + "validation_seconds": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "profile", + "attempt", + "outcome", + "started_at", + "completed_at", + "queue_seconds", + "executor_seconds" + ], + "type": "object" + }, + "maxItems": 4, + "type": "array" + }, + "completed_at": { + "format": "date-time", + "type": "string" + }, + "input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "output_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "started_at": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "started_at", + "completed_at" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / profile_reports / items / properties / finding_candidates / items / properties / failure_conditionAdded value: +{ + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Specific preconditions that make the alleged failure occur." +} - added
Output schema / properties / profile_reports / items / properties / finding_candidates / items / properties / flip_conditionAdded value: +{ + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete source/contract evidence that would refute this candidate." +} - added
Output schema / properties / profile_reports / items / properties / review_rules_sha256Added value: +{ + "anyOf": [ + { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - changed
Output schema / properties / review_context / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Immutable identifiers for the exact source and evidence packet reviewed.", - "properties": { - "base_sha": { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - "changed_files": { - "items": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "maxItems": 500, - "minItems": 1, - "type": "array" - }, - "diff_sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "evidence_packet_sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 1, - "type": "array" - }, - "evidence_registry": { - "default": [], - "description": "Optional complete ref-to-source registry with revision, coordinates and hashes.", - "items": { - "additionalProperties": false, - "description": "Metadata for one evidence item; raw content remains with the host.", - "properties": { - "end_line": { - "anyOf": [ - { - "minimum": 1, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "evidence_ref": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "kind": { - "enum": [ - "source", - "diff", - "requirement", - "runtime", - "other" - ], - "type": "string" - }, - "locator": { - "anyOf": [ - { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "path": { - "anyOf": [ - { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "revision": { - "anyOf": [ - { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "start_line": { - "anyOf": [ - { - "minimum": 1, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - } - }, - "required": [ - "evidence_ref", - "kind", - "sha256" - ], - "type": "object" - }, - "maxItems": 1000, - "type": "array" - }, - "head_sha": { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - "repository": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "repository", - "base_sha", - "head_sha", - "diff_sha256", - "evidence_packet_sha256", - "changed_files", - "evidence_refs" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Immutable identifiers for the exact source and evidence packet reviewed.", + "properties": { + "base_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "changed_files": { + "items": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 500, + "minItems": 1, + "type": "array" + }, + "diff_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 1, + "type": "array" + }, + "evidence_registry": { + "default": [], + "description": "Optional complete ref-to-source registry with revision, coordinates and hashes.", + "items": { + "additionalProperties": false, + "description": "Metadata for one evidence item; raw content remains with the host.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "evidence_ref": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "kind": { + "enum": [ + "source", + "diff", + "requirement", + "runtime", + "other" + ], + "type": "string" + }, + "locator": { + "anyOf": [ + { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "anyOf": [ + { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "revision": { + "anyOf": [ + { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "start_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "evidence_ref", + "kind", + "sha256" + ], + "type": "object" + }, + "maxItems": 1000, + "type": "array" + }, + "head_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "repository": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "review_rules": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "rules": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "condition": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "raise", + "guard" + ], + "type": "string" + }, + "paths": { + "items": { + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "rule_id": { + "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$", + "type": "string" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "rule_id", + "kind", + "paths", + "condition", + "text", + "rationale" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "schema_version": { + "const": 1, + "default": 1, + "type": "integer" + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "repository", + "base_sha", + "head_sha", + "diff_sha256", + "evidence_packet_sha256", + "changed_files", + "evidence_refs" + ], + "type": "object" + }, + { + "type": "null" + } +]
- Changed
start_qa_orchestration8 fields changed- changed
Input schema / properties / review_context / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Immutable identifiers for the exact source and evidence packet reviewed.", - "properties": { - "base_sha": { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - "changed_files": { - "items": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "maxItems": 500, - "minItems": 1, - "type": "array" - }, - "diff_sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "evidence_packet_sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 1, - "type": "array" - }, - "evidence_registry": { - "default": [], - "description": "Optional complete ref-to-source registry with revision, coordinates and hashes.", - "items": { - "additionalProperties": false, - "description": "Metadata for one evidence item; raw content remains with the host.", - "properties": { - "end_line": { - "anyOf": [ - { - "minimum": 1, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "evidence_ref": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "kind": { - "enum": [ - "source", - "diff", - "requirement", - "runtime", - "other" - ], - "type": "string" - }, - "locator": { - "anyOf": [ - { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "path": { - "anyOf": [ - { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "revision": { - "anyOf": [ - { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "start_line": { - "anyOf": [ - { - "minimum": 1, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - } - }, - "required": [ - "evidence_ref", - "kind", - "sha256" - ], - "type": "object" - }, - "maxItems": 1000, - "type": "array" - }, - "head_sha": { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - "repository": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "repository", - "base_sha", - "head_sha", - "diff_sha256", - "evidence_packet_sha256", - "changed_files", - "evidence_refs" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Immutable identifiers for the exact source and evidence packet reviewed.", + "properties": { + "base_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "changed_files": { + "items": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 500, + "minItems": 1, + "type": "array" + }, + "diff_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 1, + "type": "array" + }, + "evidence_registry": { + "default": [], + "description": "Optional complete ref-to-source registry with revision, coordinates and hashes.", + "items": { + "additionalProperties": false, + "description": "Metadata for one evidence item; raw content remains with the host.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "evidence_ref": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "kind": { + "enum": [ + "source", + "diff", + "requirement", + "runtime", + "other" + ], + "type": "string" + }, + "locator": { + "anyOf": [ + { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "anyOf": [ + { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "revision": { + "anyOf": [ + { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "start_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "evidence_ref", + "kind", + "sha256" + ], + "type": "object" + }, + "maxItems": 1000, + "type": "array" + }, + "head_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "repository": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "review_rules": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "rules": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "condition": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "raise", + "guard" + ], + "type": "string" + }, + "paths": { + "items": { + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "rule_id": { + "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$", + "type": "string" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "rule_id", + "kind", + "paths", + "condition", + "text", + "rationale" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "schema_version": { + "const": 1, + "default": 1, + "type": "integer" + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "repository", + "base_sha", + "head_sha", + "diff_sha256", + "evidence_packet_sha256", + "changed_files", + "evidence_refs" + ], + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / final_review_report / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Structured synthesis stored with a review-bound orchestration session.", - "properties": { - "candidate_decisions": { - "default": [], - "description": "One host decision per submitted candidate; absent on legacy saved reports.", - "items": { - "additionalProperties": false, - "description": "The host's disposition of one profile-local candidate.", - "properties": { - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "minItems": 1, - "type": "array" - }, - "final_finding_id": { - "anyOf": [ - { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "rationale": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - }, - "source": { - "additionalProperties": false, - "description": "A profile-local candidate that contributed to one synthesized finding.", - "properties": { - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "profile": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - } - }, - "required": [ - "profile", - "candidate_id" - ], - "type": "object" - }, - "verdict": { - "enum": [ - "confirmed", - "rejected", - "duplicate", - "unverified" - ], - "type": "string" - } - }, - "required": [ - "source", - "verdict", - "rationale", - "evidence_refs" - ], - "type": "object" - }, - "maxItems": 1000, - "type": "array" - }, - "coverage_gaps": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "finding_candidates": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "affected_area": { - "anyOf": [ - { - "maxLength": 256, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Affected user flow or system area, when supported by the evidence." - }, - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "confidence": { - "enum": [ - "high", - "medium", - "low" - ], - "type": "string" - }, - "description": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "minItems": 1, - "type": "array" - }, - "impact": { - "anyOf": [ - { - "maxLength": 2000, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Concrete effect on users or contracts; severity remains host-owned." - }, - "severity": { - "anyOf": [ - { - "enum": [ - "high", - "medium", - "low" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Impact severity selected by the host for a confirmed finding." - }, - "source_candidates": { - "default": [], - "description": "Required for new final reports; empty only on reports persisted before source linkage.", - "items": { - "additionalProperties": false, - "description": "A profile-local candidate that contributed to one synthesized finding.", - "properties": { - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "profile": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - } - }, - "required": [ - "profile", - "candidate_id" - ], - "type": "object" - }, - "type": "array" - }, - "source_locations": { - "default": [], - "description": "Precise source locations supporting this candidate when available.", - "items": { - "additionalProperties": false, - "description": "A stable source locator for a finding candidate.", - "properties": { - "end_line": { - "anyOf": [ - { - "minimum": 1, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "path": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "start_line": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "path", - "start_line" - ], - "type": "object" - }, - "maxItems": 20, - "type": "array" - }, - "source_profiles": { - "items": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "title": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "verification_gap": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "candidate_id", - "title", - "description", - "confidence", - "verification_gap", - "evidence_refs", - "source_profiles" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "profiles_reviewed": { - "items": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "summary": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "unverified": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - } - }, - "required": [ - "summary", - "profiles_reviewed" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Structured synthesis stored with a review-bound orchestration session.", + "properties": { + "candidate_decisions": { + "default": [], + "description": "One host decision per submitted candidate; absent on legacy saved reports.", + "items": { + "additionalProperties": false, + "description": "The host's disposition of one profile-local candidate.", + "properties": { + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "final_finding_id": { + "anyOf": [ + { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "refutation": { + "anyOf": [ + { + "additionalProperties": false, + "description": "Host's evidence-backed assessment, not a vote or proof of another agent's execution.", + "properties": { + "candidate_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "context_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "status": { + "enum": [ + "refuted", + "not_refuted", + "unverified" + ], + "type": "string" + } + }, + "required": [ + "context_sha256", + "candidate_sha256", + "status", + "rationale", + "evidence_refs" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + }, + "source": { + "additionalProperties": false, + "description": "A profile-local candidate that contributed to one synthesized finding.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + } + }, + "required": [ + "profile", + "candidate_id" + ], + "type": "object" + }, + "verdict": { + "enum": [ + "confirmed", + "rejected", + "duplicate", + "unverified" + ], + "type": "string" + } + }, + "required": [ + "source", + "verdict", + "rationale", + "evidence_refs" + ], + "type": "object" + }, + "maxItems": 1000, + "type": "array" + }, + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "affected_area": { + "anyOf": [ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Affected user flow or system area, when supported by the evidence." + }, + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "failure_condition": { + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Specific preconditions that make the alleged failure occur." + }, + "flip_condition": { + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete source/contract evidence that would refute this candidate." + }, + "impact": { + "anyOf": [ + { + "maxLength": 2000, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete effect on users or contracts; severity remains host-owned." + }, + "severity": { + "anyOf": [ + { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Impact severity selected by the host for a confirmed finding." + }, + "source_candidates": { + "default": [], + "description": "Required for new final reports; empty only on reports persisted before source linkage.", + "items": { + "additionalProperties": false, + "description": "A profile-local candidate that contributed to one synthesized finding.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + } + }, + "required": [ + "profile", + "candidate_id" + ], + "type": "object" + }, + "type": "array" + }, + "source_locations": { + "default": [], + "description": "Precise source locations supporting this candidate when available.", + "items": { + "additionalProperties": false, + "description": "A stable source locator for a finding candidate.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "start_line": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "path", + "start_line" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "source_profiles": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs", + "source_profiles" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profiles_reviewed": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "review_rules_sha256": { + "anyOf": [ + { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "summary": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "summary", + "profiles_reviewed" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / profile_reports / items / properties / context_selectionAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Host assertion of the exact subset actually sent to a profile.", + "properties": { + "budget_omitted_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "type": "array" + }, + "included_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "type": "array" + }, + "max_bytes": { + "maximum": 2000000, + "minimum": 1, + "type": "integer" + }, + "omitted_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "type": "array" + }, + "selected_bytes": { + "maximum": 2000000, + "minimum": 0, + "type": "integer" + }, + "selected_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "source_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + } + }, + "required": [ + "source_packet_sha256", + "selected_packet_sha256", + "included_refs", + "max_bytes", + "selected_bytes" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +} - changed
Output schema / properties / profile_reports / items / properties / execution_metrics / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Optional host-reported timing and token counts for one completed profile.", - "properties": { - "attempt_count": { - "default": 1, - "maximum": 4, - "minimum": 1, - "type": "integer" - }, - "completed_at": { - "format": "date-time", - "type": "string" - }, - "input_tokens": { - "anyOf": [ - { - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "output_tokens": { - "anyOf": [ - { - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "started_at": { - "format": "date-time", - "type": "string" - } - }, - "required": [ - "started_at", - "completed_at" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Optional host-reported timing and token counts for one completed profile.", + "properties": { + "attempt_count": { + "default": 1, + "maximum": 4, + "minimum": 1, + "type": "integer" + }, + "attempts": { + "default": [], + "items": { + "additionalProperties": false, + "description": "One actual executor call; no exception bodies or source content.", + "properties": { + "attempt": { + "maximum": 4, + "minimum": 1, + "type": "integer" + }, + "cached_input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "completed_at": { + "format": "date-time", + "type": "string" + }, + "executor_seconds": { + "minimum": 0, + "type": "number" + }, + "input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "model_seconds": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "outcome": { + "enum": [ + "completed", + "retryable_error", + "timeout", + "failed", + "cancelled" + ], + "type": "string" + }, + "output_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "preparation_seconds": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "queue_seconds": { + "minimum": 0, + "type": "number" + }, + "started_at": { + "format": "date-time", + "type": "string" + }, + "validation_seconds": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "profile", + "attempt", + "outcome", + "started_at", + "completed_at", + "queue_seconds", + "executor_seconds" + ], + "type": "object" + }, + "maxItems": 4, + "type": "array" + }, + "completed_at": { + "format": "date-time", + "type": "string" + }, + "input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "output_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "started_at": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "started_at", + "completed_at" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / profile_reports / items / properties / finding_candidates / items / properties / failure_conditionAdded value: +{ + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Specific preconditions that make the alleged failure occur." +} - added
Output schema / properties / profile_reports / items / properties / finding_candidates / items / properties / flip_conditionAdded value: +{ + "anyOf": [ + { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete source/contract evidence that would refute this candidate." +} - added
Output schema / properties / profile_reports / items / properties / review_rules_sha256Added value: +{ + "anyOf": [ + { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - changed
Output schema / properties / review_context / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Immutable identifiers for the exact source and evidence packet reviewed.", - "properties": { - "base_sha": { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - "changed_files": { - "items": { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - "maxItems": 500, - "minItems": 1, - "type": "array" - }, - "diff_sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "evidence_packet_sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 1, - "type": "array" - }, - "evidence_registry": { - "default": [], - "description": "Optional complete ref-to-source registry with revision, coordinates and hashes.", - "items": { - "additionalProperties": false, - "description": "Metadata for one evidence item; raw content remains with the host.", - "properties": { - "end_line": { - "anyOf": [ - { - "minimum": 1, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - }, - "evidence_ref": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "kind": { - "enum": [ - "source", - "diff", - "requirement", - "runtime", - "other" - ], - "type": "string" - }, - "locator": { - "anyOf": [ - { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "path": { - "anyOf": [ - { - "maxLength": 1024, - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "revision": { - "anyOf": [ - { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "start_line": { - "anyOf": [ - { - "minimum": 1, - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null - } - }, - "required": [ - "evidence_ref", - "kind", - "sha256" - ], - "type": "object" - }, - "maxItems": 1000, - "type": "array" - }, - "head_sha": { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - "repository": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "repository", - "base_sha", - "head_sha", - "diff_sha256", - "evidence_packet_sha256", - "changed_files", - "evidence_refs" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Immutable identifiers for the exact source and evidence packet reviewed.", + "properties": { + "base_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "changed_files": { + "items": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 500, + "minItems": 1, + "type": "array" + }, + "diff_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 1, + "type": "array" + }, + "evidence_registry": { + "default": [], + "description": "Optional complete ref-to-source registry with revision, coordinates and hashes.", + "items": { + "additionalProperties": false, + "description": "Metadata for one evidence item; raw content remains with the host.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "evidence_ref": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "kind": { + "enum": [ + "source", + "diff", + "requirement", + "runtime", + "other" + ], + "type": "string" + }, + "locator": { + "anyOf": [ + { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "anyOf": [ + { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "revision": { + "anyOf": [ + { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "start_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "evidence_ref", + "kind", + "sha256" + ], + "type": "object" + }, + "maxItems": 1000, + "type": "array" + }, + "head_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "repository": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "review_rules": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "rules": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "condition": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "raise", + "guard" + ], + "type": "string" + }, + "paths": { + "items": { + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "rule_id": { + "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$", + "type": "string" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "rule_id", + "kind", + "paths", + "condition", + "text", + "rationale" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "schema_version": { + "const": 1, + "default": 1, + "type": "integer" + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "repository", + "base_sha", + "head_sha", + "diff_sha256", + "evidence_packet_sha256", + "changed_files", + "evidence_refs" + ], + "type": "object" + }, + { + "type": "null" + } +]
5 tool updates
v0.2.10- Changed
advance_qa_orchestration17 fields changed- added
Input schema / properties / expected_revisionAdded value: +{ + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional workflow revision from the latest session. A new transition is rejected if stale; a recognized request_id replay remains safe." +} - changed
Input schema / properties / profile_reports / anyOfPrevious value: -[ - { - "items": { - "additionalProperties": false, - "description": "Structured host-reported result for one completed specialist profile.", - "properties": { - "coverage_gaps": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "evidence_map": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "description": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - }, - "evidence_ref": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - } - }, - "required": [ - "evidence_ref", - "description" - ], - "type": "object" - }, - "maxItems": 500, - "type": "array" - }, - "finding_candidates": { - "default": [], - "items": { - "additionalProperties": false, - "description": "A possible defect with evidence references; the host still decides whether it is confirmed.", - "properties": { - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "confidence": { - "enum": [ - "high", - "medium", - "low" - ], - "type": "string" - }, - "description": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "minItems": 1, - "type": "array" - }, - "title": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "verification_gap": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "candidate_id", - "title", - "description", - "confidence", - "verification_gap", - "evidence_refs" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "profile": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "scope": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - }, - "unverified": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - } - }, - "required": [ - "profile", - "scope" - ], - "type": "object" - }, - "type": "array" - }, - { - "type": "null" - } -]New value: +[ + { + "items": { + "additionalProperties": false, + "description": "Structured host-reported result for one completed specialist profile.", + "properties": { + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "evidence_map": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "description": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "evidence_ref": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + } + }, + "required": [ + "evidence_ref", + "description" + ], + "type": "object" + }, + "maxItems": 500, + "type": "array" + }, + "execution_metrics": { + "anyOf": [ + { + "additionalProperties": false, + "description": "Optional host-reported timing and token counts for one completed profile.", + "properties": { + "attempt_count": { + "default": 1, + "maximum": 4, + "minimum": 1, + "type": "integer" + }, + "completed_at": { + "format": "date-time", + "type": "string" + }, + "input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "output_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "started_at": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "started_at", + "completed_at" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional host-reported execution data; the orchestrator does not verify it." + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "description": "A possible defect with evidence references; the host still decides whether it is confirmed.", + "properties": { + "affected_area": { + "anyOf": [ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Affected user flow or system area, when supported by the evidence." + }, + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "impact": { + "anyOf": [ + { + "maxLength": 2000, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete effect on users or contracts; severity remains host-owned." + }, + "source_locations": { + "default": [], + "description": "Precise source locations supporting this candidate when available.", + "items": { + "additionalProperties": false, + "description": "A stable source locator for a finding candidate.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "start_line": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "path", + "start_line" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "scope": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "profile", + "scope" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } +] - changed
Input schema / properties / profile_reports / descriptionPrevious value: -"For a review-context-bound session, one structured result per completed profile, in the same order. Every finding must cite Evidence Packet references. Omit for legacy sessions without review_context."New value: +"For a review-context-bound session, one structured result per completed profile, in the same order. Every finding must cite Evidence Packet references. Optional execution_metrics are host-reported and are not independently verified. Up to ten reports are accepted, with 64 KiB per report and 256 KiB combined per session. Omit for legacy sessions without review_context." - added
Input schema / properties / request_idAdded value: +{ + "anyOf": [ + { + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional unique transition key. Requires expected_revision. Retrying the exact same payload returns current retained state without repeating the transition; reusing the key with another payload is rejected." +} - changed
Input schema / properties / risk_signals / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Content-free, host-supplied signals used for deterministic escalation.", - "properties": { - "cross_system_scope": { - "default": false, - "description": "The relevant behavior crosses repository, service, or system boundaries.", - "type": "boolean" - }, - "evidence_conflict": { - "default": false, - "description": "Relevant authoritative evidence sources disagree.", - "type": "boolean" - }, - "evidence_uncertain": { - "default": false, - "description": "A specific material conclusion remains uncertain, and a scoped read-only review could plausibly resolve it. Do not set solely because CI, Stage, or runtime checks were not run.", - "type": "boolean" - }, - "high_blast_radius": { - "default": false, - "description": "The change could affect many consumers, services, or data records.", - "type": "boolean" - }, - "high_risk_domain": { - "default": false, - "description": "The change affects a sensitive security, identity, payment, fraud, privacy, or access-control area.", - "type": "boolean" - }, - "multiple_plausible_causes": { - "default": false, - "description": "More than one plausible cause remains after investigation.", - "type": "boolean" - }, - "non_reproducible": { - "default": false, - "description": "The reported behavior cannot be reproduced under expected conditions.", - "type": "boolean" - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Host-supplied escalation signals with the rationale and refs that support them.", + "properties": { + "cross_system_scope": { + "default": false, + "description": "The relevant behavior crosses repository, service, or system boundaries.", + "type": "boolean" + }, + "evidence_conflict": { + "default": false, + "description": "Relevant authoritative evidence sources disagree.", + "type": "boolean" + }, + "evidence_refs": { + "default": [], + "description": "Evidence Packet references supporting the enabled signals.", + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "evidence_uncertain": { + "default": false, + "description": "A specific material conclusion remains uncertain, and a scoped read-only review could plausibly resolve it. Do not set solely because CI, Stage, or runtime checks were not run.", + "type": "boolean" + }, + "high_blast_radius": { + "default": false, + "description": "The change could affect many consumers, services, or data records.", + "type": "boolean" + }, + "high_risk_domain": { + "default": false, + "description": "The change affects a sensitive security, identity, payment, fraud, privacy, or access-control area.", + "type": "boolean" + }, + "multiple_plausible_causes": { + "default": false, + "description": "More than one plausible cause remains after investigation.", + "type": "boolean" + }, + "non_reproducible": { + "default": false, + "description": "The reported behavior cannot be reproduced under expected conditions.", + "type": "boolean" + }, + "rationale": { + "anyOf": [ + { + "maxLength": 2000, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Short explanation for the enabled signals; required when any signal is true." + } + }, + "type": "object" + }, + { + "type": "null" + } +] - changed
Input schema / properties / risk_signals / descriptionPrevious value: -"Required with the final completed primary-review profile. Send an empty object when no evidence-based fixed escalation signals apply; do not send on earlier profiles or on the synthesis transition."New value: +"Required with the final completed primary-review profile. Send an empty object when no evidence-based fixed escalation signals apply; any true signal requires a short rationale and Evidence Packet references. Do not send on earlier profiles or on the synthesis transition." - changed
Output schema / properties / final_review_report / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Structured synthesis stored with a review-bound orchestration session.", - "properties": { - "coverage_gaps": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "finding_candidates": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "confidence": { - "enum": [ - "high", - "medium", - "low" - ], - "type": "string" - }, - "description": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "minItems": 1, - "type": "array" - }, - "source_profiles": { - "items": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "title": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "verification_gap": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "candidate_id", - "title", - "description", - "confidence", - "verification_gap", - "evidence_refs", - "source_profiles" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "profiles_reviewed": { - "items": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "summary": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "unverified": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - } - }, - "required": [ - "summary", - "profiles_reviewed" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Structured synthesis stored with a review-bound orchestration session.", + "properties": { + "candidate_decisions": { + "default": [], + "description": "One host decision per submitted candidate; absent on legacy saved reports.", + "items": { + "additionalProperties": false, + "description": "The host's disposition of one profile-local candidate.", + "properties": { + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "final_finding_id": { + "anyOf": [ + { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "source": { + "additionalProperties": false, + "description": "A profile-local candidate that contributed to one synthesized finding.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + } + }, + "required": [ + "profile", + "candidate_id" + ], + "type": "object" + }, + "verdict": { + "enum": [ + "confirmed", + "rejected", + "duplicate", + "unverified" + ], + "type": "string" + } + }, + "required": [ + "source", + "verdict", + "rationale", + "evidence_refs" + ], + "type": "object" + }, + "maxItems": 1000, + "type": "array" + }, + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "affected_area": { + "anyOf": [ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Affected user flow or system area, when supported by the evidence." + }, + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "impact": { + "anyOf": [ + { + "maxLength": 2000, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete effect on users or contracts; severity remains host-owned." + }, + "severity": { + "anyOf": [ + { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Impact severity selected by the host for a confirmed finding." + }, + "source_candidates": { + "default": [], + "description": "Required for new final reports; empty only on reports persisted before source linkage.", + "items": { + "additionalProperties": false, + "description": "A profile-local candidate that contributed to one synthesized finding.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + } + }, + "required": [ + "profile", + "candidate_id" + ], + "type": "object" + }, + "type": "array" + }, + "source_locations": { + "default": [], + "description": "Precise source locations supporting this candidate when available.", + "items": { + "additionalProperties": false, + "description": "A stable source locator for a finding candidate.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "start_line": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "path", + "start_line" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "source_profiles": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs", + "source_profiles" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profiles_reviewed": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "summary": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "summary", + "profiles_reviewed" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / profile_reports / items / properties / execution_metricsAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Optional host-reported timing and token counts for one completed profile.", + "properties": { + "attempt_count": { + "default": 1, + "maximum": 4, + "minimum": 1, + "type": "integer" + }, + "completed_at": { + "format": "date-time", + "type": "string" + }, + "input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "output_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "started_at": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "started_at", + "completed_at" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional host-reported execution data; the orchestrator does not verify it." +} - added
Output schema / properties / profile_reports / items / properties / finding_candidates / items / properties / affected_areaAdded value: +{ + "anyOf": [ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Affected user flow or system area, when supported by the evidence." +} - added
Output schema / properties / profile_reports / items / properties / finding_candidates / items / properties / impactAdded value: +{ + "anyOf": [ + { + "maxLength": 2000, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete effect on users or contracts; severity remains host-owned." +} - added
Output schema / properties / profile_reports / items / properties / finding_candidates / items / properties / source_locationsAdded value: +{ + "default": [], + "description": "Precise source locations supporting this candidate when available.", + "items": { + "additionalProperties": false, + "description": "A stable source locator for a finding candidate.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "start_line": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "path", + "start_line" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" +} - added
Output schema / properties / profile_reports / maxItemsAdded value: +10 - added
Output schema / properties / recommended_profilesAdded value: +{ + "description": "File-type-based profile hints only; the host selects the route.", + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "type": "array" +} - changed
Output schema / properties / review_context / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Immutable identifiers for the exact source and evidence packet reviewed.", - "properties": { - "base_sha": { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - "changed_files": { - "items": { - "type": "string" - }, - "maxItems": 500, - "minItems": 1, - "type": "array" - }, - "diff_sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "evidence_packet_sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 1, - "type": "array" - }, - "head_sha": { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - "repository": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "repository", - "base_sha", - "head_sha", - "diff_sha256", - "evidence_packet_sha256", - "changed_files", - "evidence_refs" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Immutable identifiers for the exact source and evidence packet reviewed.", + "properties": { + "base_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "changed_files": { + "items": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 500, + "minItems": 1, + "type": "array" + }, + "diff_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 1, + "type": "array" + }, + "evidence_registry": { + "default": [], + "description": "Optional complete ref-to-source registry with revision, coordinates and hashes.", + "items": { + "additionalProperties": false, + "description": "Metadata for one evidence item; raw content remains with the host.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "evidence_ref": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "kind": { + "enum": [ + "source", + "diff", + "requirement", + "runtime", + "other" + ], + "type": "string" + }, + "locator": { + "anyOf": [ + { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "anyOf": [ + { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "revision": { + "anyOf": [ + { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "start_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "evidence_ref", + "kind", + "sha256" + ], + "type": "object" + }, + "maxItems": 1000, + "type": "array" + }, + "head_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "repository": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "repository", + "base_sha", + "head_sha", + "diff_sha256", + "evidence_packet_sha256", + "changed_files", + "evidence_refs" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / revisionAdded value: +{ + "default": 0, + "description": "Workflow revision for conditional writes.", + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / risk_signalsAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Host-supplied escalation signals with the rationale and refs that support them.", + "properties": { + "cross_system_scope": { + "default": false, + "description": "The relevant behavior crosses repository, service, or system boundaries.", + "type": "boolean" + }, + "evidence_conflict": { + "default": false, + "description": "Relevant authoritative evidence sources disagree.", + "type": "boolean" + }, + "evidence_refs": { + "default": [], + "description": "Evidence Packet references supporting the enabled signals.", + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "evidence_uncertain": { + "default": false, + "description": "A specific material conclusion remains uncertain, and a scoped read-only review could plausibly resolve it. Do not set solely because CI, Stage, or runtime checks were not run.", + "type": "boolean" + }, + "high_blast_radius": { + "default": false, + "description": "The change could affect many consumers, services, or data records.", + "type": "boolean" + }, + "high_risk_domain": { + "default": false, + "description": "The change affects a sensitive security, identity, payment, fraud, privacy, or access-control area.", + "type": "boolean" + }, + "multiple_plausible_causes": { + "default": false, + "description": "More than one plausible cause remains after investigation.", + "type": "boolean" + }, + "non_reproducible": { + "default": false, + "description": "The reported behavior cannot be reproduced under expected conditions.", + "type": "boolean" + }, + "rationale": { + "anyOf": [ + { + "maxLength": 2000, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Short explanation for the enabled signals; required when any signal is true." + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / properties / transition_receiptsAdded value: +{ + "description": "Bounded request hashes for safe replay; no raw transition payloads are stored.", + "items": { + "additionalProperties": false, + "properties": { + "applied_revision": { + "minimum": 1, + "type": "integer" + }, + "request_id": { + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$", + "type": "string" + }, + "request_sha256": { + "pattern": "^[a-f0-9]{64}$", + "type": "string" + } + }, + "required": [ + "request_id", + "request_sha256", + "applied_revision" + ], + "type": "object" + }, + "maxItems": 128, + "type": "array" +}
- Changed
finish_qa_orchestration14 fields changed- added
Input schema / properties / expected_revisionAdded value: +{ + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional current workflow revision for a new finalization. The same retained outcome/report can still be replayed idempotently." +} - changed
Input schema / properties / final_review_report / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Structured synthesis stored with a review-bound orchestration session.", - "properties": { - "coverage_gaps": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "finding_candidates": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "confidence": { - "enum": [ - "high", - "medium", - "low" - ], - "type": "string" - }, - "description": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "minItems": 1, - "type": "array" - }, - "source_profiles": { - "items": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "title": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "verification_gap": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "candidate_id", - "title", - "description", - "confidence", - "verification_gap", - "evidence_refs", - "source_profiles" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "profiles_reviewed": { - "items": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "summary": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "unverified": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - } - }, - "required": [ - "summary", - "profiles_reviewed" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Structured synthesis stored with a review-bound orchestration session.", + "properties": { + "candidate_decisions": { + "default": [], + "description": "One host decision per submitted candidate; absent on legacy saved reports.", + "items": { + "additionalProperties": false, + "description": "The host's disposition of one profile-local candidate.", + "properties": { + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "final_finding_id": { + "anyOf": [ + { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "source": { + "additionalProperties": false, + "description": "A profile-local candidate that contributed to one synthesized finding.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + } + }, + "required": [ + "profile", + "candidate_id" + ], + "type": "object" + }, + "verdict": { + "enum": [ + "confirmed", + "rejected", + "duplicate", + "unverified" + ], + "type": "string" + } + }, + "required": [ + "source", + "verdict", + "rationale", + "evidence_refs" + ], + "type": "object" + }, + "maxItems": 1000, + "type": "array" + }, + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "affected_area": { + "anyOf": [ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Affected user flow or system area, when supported by the evidence." + }, + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "impact": { + "anyOf": [ + { + "maxLength": 2000, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete effect on users or contracts; severity remains host-owned." + }, + "severity": { + "anyOf": [ + { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Impact severity selected by the host for a confirmed finding." + }, + "source_candidates": { + "default": [], + "description": "Required for new final reports; empty only on reports persisted before source linkage.", + "items": { + "additionalProperties": false, + "description": "A profile-local candidate that contributed to one synthesized finding.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + } + }, + "required": [ + "profile", + "candidate_id" + ], + "type": "object" + }, + "type": "array" + }, + "source_locations": { + "default": [], + "description": "Precise source locations supporting this candidate when available.", + "items": { + "additionalProperties": false, + "description": "A stable source locator for a finding candidate.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "start_line": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "path", + "start_line" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "source_profiles": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs", + "source_profiles" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profiles_reviewed": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "summary": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "summary", + "profiles_reviewed" + ], + "type": "object" + }, + { + "type": "null" + } +] - changed
Input schema / properties / final_review_report / descriptionPrevious value: -"Structured synthesized findings and coverage for a review_context-bound session. Required when its outcome is completed; each finding cites registered evidence refs."New value: +"Structured synthesized findings and coverage for a review_context-bound session. Required when its outcome is completed; each finding cites registered evidence refs and the original profile-local candidate IDs and evidence that support it. The report must include one candidate_decisions entry per submitted candidate. Confirmed findings require host severity, impact, affected area, and source locations. The report is limited to 64 KiB; profile plus final reports are limited to 256 KiB per session." - changed
Output schema / properties / final_review_report / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Structured synthesis stored with a review-bound orchestration session.", - "properties": { - "coverage_gaps": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "finding_candidates": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "confidence": { - "enum": [ - "high", - "medium", - "low" - ], - "type": "string" - }, - "description": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "minItems": 1, - "type": "array" - }, - "source_profiles": { - "items": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "title": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "verification_gap": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "candidate_id", - "title", - "description", - "confidence", - "verification_gap", - "evidence_refs", - "source_profiles" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "profiles_reviewed": { - "items": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "summary": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "unverified": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - } - }, - "required": [ - "summary", - "profiles_reviewed" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Structured synthesis stored with a review-bound orchestration session.", + "properties": { + "candidate_decisions": { + "default": [], + "description": "One host decision per submitted candidate; absent on legacy saved reports.", + "items": { + "additionalProperties": false, + "description": "The host's disposition of one profile-local candidate.", + "properties": { + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "final_finding_id": { + "anyOf": [ + { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "source": { + "additionalProperties": false, + "description": "A profile-local candidate that contributed to one synthesized finding.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + } + }, + "required": [ + "profile", + "candidate_id" + ], + "type": "object" + }, + "verdict": { + "enum": [ + "confirmed", + "rejected", + "duplicate", + "unverified" + ], + "type": "string" + } + }, + "required": [ + "source", + "verdict", + "rationale", + "evidence_refs" + ], + "type": "object" + }, + "maxItems": 1000, + "type": "array" + }, + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "affected_area": { + "anyOf": [ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Affected user flow or system area, when supported by the evidence." + }, + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "impact": { + "anyOf": [ + { + "maxLength": 2000, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete effect on users or contracts; severity remains host-owned." + }, + "severity": { + "anyOf": [ + { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Impact severity selected by the host for a confirmed finding." + }, + "source_candidates": { + "default": [], + "description": "Required for new final reports; empty only on reports persisted before source linkage.", + "items": { + "additionalProperties": false, + "description": "A profile-local candidate that contributed to one synthesized finding.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + } + }, + "required": [ + "profile", + "candidate_id" + ], + "type": "object" + }, + "type": "array" + }, + "source_locations": { + "default": [], + "description": "Precise source locations supporting this candidate when available.", + "items": { + "additionalProperties": false, + "description": "A stable source locator for a finding candidate.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "start_line": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "path", + "start_line" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "source_profiles": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs", + "source_profiles" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profiles_reviewed": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "summary": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "summary", + "profiles_reviewed" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / profile_reports / items / properties / execution_metricsAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Optional host-reported timing and token counts for one completed profile.", + "properties": { + "attempt_count": { + "default": 1, + "maximum": 4, + "minimum": 1, + "type": "integer" + }, + "completed_at": { + "format": "date-time", + "type": "string" + }, + "input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "output_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "started_at": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "started_at", + "completed_at" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional host-reported execution data; the orchestrator does not verify it." +} - added
Output schema / properties / profile_reports / items / properties / finding_candidates / items / properties / affected_areaAdded value: +{ + "anyOf": [ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Affected user flow or system area, when supported by the evidence." +} - added
Output schema / properties / profile_reports / items / properties / finding_candidates / items / properties / impactAdded value: +{ + "anyOf": [ + { + "maxLength": 2000, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete effect on users or contracts; severity remains host-owned." +} - added
Output schema / properties / profile_reports / items / properties / finding_candidates / items / properties / source_locationsAdded value: +{ + "default": [], + "description": "Precise source locations supporting this candidate when available.", + "items": { + "additionalProperties": false, + "description": "A stable source locator for a finding candidate.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "start_line": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "path", + "start_line" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" +} - added
Output schema / properties / profile_reports / maxItemsAdded value: +10 - added
Output schema / properties / recommended_profilesAdded value: +{ + "description": "File-type-based profile hints only; the host selects the route.", + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "type": "array" +} - changed
Output schema / properties / review_context / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Immutable identifiers for the exact source and evidence packet reviewed.", - "properties": { - "base_sha": { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - "changed_files": { - "items": { - "type": "string" - }, - "maxItems": 500, - "minItems": 1, - "type": "array" - }, - "diff_sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "evidence_packet_sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 1, - "type": "array" - }, - "head_sha": { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - "repository": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "repository", - "base_sha", - "head_sha", - "diff_sha256", - "evidence_packet_sha256", - "changed_files", - "evidence_refs" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Immutable identifiers for the exact source and evidence packet reviewed.", + "properties": { + "base_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "changed_files": { + "items": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 500, + "minItems": 1, + "type": "array" + }, + "diff_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 1, + "type": "array" + }, + "evidence_registry": { + "default": [], + "description": "Optional complete ref-to-source registry with revision, coordinates and hashes.", + "items": { + "additionalProperties": false, + "description": "Metadata for one evidence item; raw content remains with the host.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "evidence_ref": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "kind": { + "enum": [ + "source", + "diff", + "requirement", + "runtime", + "other" + ], + "type": "string" + }, + "locator": { + "anyOf": [ + { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "anyOf": [ + { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "revision": { + "anyOf": [ + { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "start_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "evidence_ref", + "kind", + "sha256" + ], + "type": "object" + }, + "maxItems": 1000, + "type": "array" + }, + "head_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "repository": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "repository", + "base_sha", + "head_sha", + "diff_sha256", + "evidence_packet_sha256", + "changed_files", + "evidence_refs" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / revisionAdded value: +{ + "default": 0, + "description": "Workflow revision for conditional writes.", + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / risk_signalsAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Host-supplied escalation signals with the rationale and refs that support them.", + "properties": { + "cross_system_scope": { + "default": false, + "description": "The relevant behavior crosses repository, service, or system boundaries.", + "type": "boolean" + }, + "evidence_conflict": { + "default": false, + "description": "Relevant authoritative evidence sources disagree.", + "type": "boolean" + }, + "evidence_refs": { + "default": [], + "description": "Evidence Packet references supporting the enabled signals.", + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "evidence_uncertain": { + "default": false, + "description": "A specific material conclusion remains uncertain, and a scoped read-only review could plausibly resolve it. Do not set solely because CI, Stage, or runtime checks were not run.", + "type": "boolean" + }, + "high_blast_radius": { + "default": false, + "description": "The change could affect many consumers, services, or data records.", + "type": "boolean" + }, + "high_risk_domain": { + "default": false, + "description": "The change affects a sensitive security, identity, payment, fraud, privacy, or access-control area.", + "type": "boolean" + }, + "multiple_plausible_causes": { + "default": false, + "description": "More than one plausible cause remains after investigation.", + "type": "boolean" + }, + "non_reproducible": { + "default": false, + "description": "The reported behavior cannot be reproduced under expected conditions.", + "type": "boolean" + }, + "rationale": { + "anyOf": [ + { + "maxLength": 2000, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Short explanation for the enabled signals; required when any signal is true." + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / properties / transition_receiptsAdded value: +{ + "description": "Bounded request hashes for safe replay; no raw transition payloads are stored.", + "items": { + "additionalProperties": false, + "properties": { + "applied_revision": { + "minimum": 1, + "type": "integer" + }, + "request_id": { + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$", + "type": "string" + }, + "request_sha256": { + "pattern": "^[a-f0-9]{64}$", + "type": "string" + } + }, + "required": [ + "request_id", + "request_sha256", + "applied_revision" + ], + "type": "object" + }, + "maxItems": 128, + "type": "array" +}
- Changed
get_qa_orchestration11 fields changed- changed
Output schema / properties / final_review_report / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Structured synthesis stored with a review-bound orchestration session.", - "properties": { - "coverage_gaps": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "finding_candidates": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "confidence": { - "enum": [ - "high", - "medium", - "low" - ], - "type": "string" - }, - "description": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "minItems": 1, - "type": "array" - }, - "source_profiles": { - "items": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "title": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "verification_gap": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "candidate_id", - "title", - "description", - "confidence", - "verification_gap", - "evidence_refs", - "source_profiles" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "profiles_reviewed": { - "items": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "summary": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "unverified": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - } - }, - "required": [ - "summary", - "profiles_reviewed" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Structured synthesis stored with a review-bound orchestration session.", + "properties": { + "candidate_decisions": { + "default": [], + "description": "One host decision per submitted candidate; absent on legacy saved reports.", + "items": { + "additionalProperties": false, + "description": "The host's disposition of one profile-local candidate.", + "properties": { + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "final_finding_id": { + "anyOf": [ + { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "source": { + "additionalProperties": false, + "description": "A profile-local candidate that contributed to one synthesized finding.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + } + }, + "required": [ + "profile", + "candidate_id" + ], + "type": "object" + }, + "verdict": { + "enum": [ + "confirmed", + "rejected", + "duplicate", + "unverified" + ], + "type": "string" + } + }, + "required": [ + "source", + "verdict", + "rationale", + "evidence_refs" + ], + "type": "object" + }, + "maxItems": 1000, + "type": "array" + }, + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "affected_area": { + "anyOf": [ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Affected user flow or system area, when supported by the evidence." + }, + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "impact": { + "anyOf": [ + { + "maxLength": 2000, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete effect on users or contracts; severity remains host-owned." + }, + "severity": { + "anyOf": [ + { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Impact severity selected by the host for a confirmed finding." + }, + "source_candidates": { + "default": [], + "description": "Required for new final reports; empty only on reports persisted before source linkage.", + "items": { + "additionalProperties": false, + "description": "A profile-local candidate that contributed to one synthesized finding.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + } + }, + "required": [ + "profile", + "candidate_id" + ], + "type": "object" + }, + "type": "array" + }, + "source_locations": { + "default": [], + "description": "Precise source locations supporting this candidate when available.", + "items": { + "additionalProperties": false, + "description": "A stable source locator for a finding candidate.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "start_line": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "path", + "start_line" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "source_profiles": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs", + "source_profiles" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profiles_reviewed": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "summary": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "summary", + "profiles_reviewed" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / profile_reports / items / properties / execution_metricsAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Optional host-reported timing and token counts for one completed profile.", + "properties": { + "attempt_count": { + "default": 1, + "maximum": 4, + "minimum": 1, + "type": "integer" + }, + "completed_at": { + "format": "date-time", + "type": "string" + }, + "input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "output_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "started_at": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "started_at", + "completed_at" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional host-reported execution data; the orchestrator does not verify it." +} - added
Output schema / properties / profile_reports / items / properties / finding_candidates / items / properties / affected_areaAdded value: +{ + "anyOf": [ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Affected user flow or system area, when supported by the evidence." +} - added
Output schema / properties / profile_reports / items / properties / finding_candidates / items / properties / impactAdded value: +{ + "anyOf": [ + { + "maxLength": 2000, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete effect on users or contracts; severity remains host-owned." +} - added
Output schema / properties / profile_reports / items / properties / finding_candidates / items / properties / source_locationsAdded value: +{ + "default": [], + "description": "Precise source locations supporting this candidate when available.", + "items": { + "additionalProperties": false, + "description": "A stable source locator for a finding candidate.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "start_line": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "path", + "start_line" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" +} - added
Output schema / properties / profile_reports / maxItemsAdded value: +10 - added
Output schema / properties / recommended_profilesAdded value: +{ + "description": "File-type-based profile hints only; the host selects the route.", + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "type": "array" +} - changed
Output schema / properties / review_context / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Immutable identifiers for the exact source and evidence packet reviewed.", - "properties": { - "base_sha": { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - "changed_files": { - "items": { - "type": "string" - }, - "maxItems": 500, - "minItems": 1, - "type": "array" - }, - "diff_sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "evidence_packet_sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 1, - "type": "array" - }, - "head_sha": { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - "repository": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "repository", - "base_sha", - "head_sha", - "diff_sha256", - "evidence_packet_sha256", - "changed_files", - "evidence_refs" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Immutable identifiers for the exact source and evidence packet reviewed.", + "properties": { + "base_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "changed_files": { + "items": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 500, + "minItems": 1, + "type": "array" + }, + "diff_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 1, + "type": "array" + }, + "evidence_registry": { + "default": [], + "description": "Optional complete ref-to-source registry with revision, coordinates and hashes.", + "items": { + "additionalProperties": false, + "description": "Metadata for one evidence item; raw content remains with the host.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "evidence_ref": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "kind": { + "enum": [ + "source", + "diff", + "requirement", + "runtime", + "other" + ], + "type": "string" + }, + "locator": { + "anyOf": [ + { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "anyOf": [ + { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "revision": { + "anyOf": [ + { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "start_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "evidence_ref", + "kind", + "sha256" + ], + "type": "object" + }, + "maxItems": 1000, + "type": "array" + }, + "head_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "repository": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "repository", + "base_sha", + "head_sha", + "diff_sha256", + "evidence_packet_sha256", + "changed_files", + "evidence_refs" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / revisionAdded value: +{ + "default": 0, + "description": "Workflow revision for conditional writes.", + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / risk_signalsAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Host-supplied escalation signals with the rationale and refs that support them.", + "properties": { + "cross_system_scope": { + "default": false, + "description": "The relevant behavior crosses repository, service, or system boundaries.", + "type": "boolean" + }, + "evidence_conflict": { + "default": false, + "description": "Relevant authoritative evidence sources disagree.", + "type": "boolean" + }, + "evidence_refs": { + "default": [], + "description": "Evidence Packet references supporting the enabled signals.", + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "evidence_uncertain": { + "default": false, + "description": "A specific material conclusion remains uncertain, and a scoped read-only review could plausibly resolve it. Do not set solely because CI, Stage, or runtime checks were not run.", + "type": "boolean" + }, + "high_blast_radius": { + "default": false, + "description": "The change could affect many consumers, services, or data records.", + "type": "boolean" + }, + "high_risk_domain": { + "default": false, + "description": "The change affects a sensitive security, identity, payment, fraud, privacy, or access-control area.", + "type": "boolean" + }, + "multiple_plausible_causes": { + "default": false, + "description": "More than one plausible cause remains after investigation.", + "type": "boolean" + }, + "non_reproducible": { + "default": false, + "description": "The reported behavior cannot be reproduced under expected conditions.", + "type": "boolean" + }, + "rationale": { + "anyOf": [ + { + "maxLength": 2000, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Short explanation for the enabled signals; required when any signal is true." + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / properties / transition_receiptsAdded value: +{ + "description": "Bounded request hashes for safe replay; no raw transition payloads are stored.", + "items": { + "additionalProperties": false, + "properties": { + "applied_revision": { + "minimum": 1, + "type": "integer" + }, + "request_id": { + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$", + "type": "string" + }, + "request_sha256": { + "pattern": "^[a-f0-9]{64}$", + "type": "string" + } + }, + "required": [ + "request_id", + "request_sha256", + "applied_revision" + ], + "type": "object" + }, + "maxItems": 128, + "type": "array" +}
- Added
renew_qa_orchestration - Changed
start_qa_orchestration13 fields changed- changed
Input schema / properties / review_context / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Immutable identifiers for the exact source and evidence packet reviewed.", - "properties": { - "base_sha": { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - "changed_files": { - "items": { - "type": "string" - }, - "maxItems": 500, - "minItems": 1, - "type": "array" - }, - "diff_sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "evidence_packet_sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 1, - "type": "array" - }, - "head_sha": { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - "repository": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "repository", - "base_sha", - "head_sha", - "diff_sha256", - "evidence_packet_sha256", - "changed_files", - "evidence_refs" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Immutable identifiers for the exact source and evidence packet reviewed.", + "properties": { + "base_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "changed_files": { + "items": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 500, + "minItems": 1, + "type": "array" + }, + "diff_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 1, + "type": "array" + }, + "evidence_registry": { + "default": [], + "description": "Optional complete ref-to-source registry with revision, coordinates and hashes.", + "items": { + "additionalProperties": false, + "description": "Metadata for one evidence item; raw content remains with the host.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "evidence_ref": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "kind": { + "enum": [ + "source", + "diff", + "requirement", + "runtime", + "other" + ], + "type": "string" + }, + "locator": { + "anyOf": [ + { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "anyOf": [ + { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "revision": { + "anyOf": [ + { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "start_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "evidence_ref", + "kind", + "sha256" + ], + "type": "object" + }, + "maxItems": 1000, + "type": "array" + }, + "head_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "repository": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "repository", + "base_sha", + "head_sha", + "diff_sha256", + "evidence_packet_sha256", + "changed_files", + "evidence_refs" + ], + "type": "object" + }, + { + "type": "null" + } +] - changed
Input schema / properties / review_context / descriptionPrevious value: -"Optional immutable repository, base/head, diff, and Evidence Packet identity. When supplied, every completed profile must include a structured report whose evidence references belong to this packet; completed outcomes require a final report."New value: +"Optional immutable repository, base/head, changed-file, diff, and Evidence Packet identity. When supplied, every completed profile must include a structured report whose evidence references belong to this packet; completed outcomes require a final report. The response may include file-type-based recommended_profiles as non-binding hints. Optional evidence_registry metadata binds each ref to a source kind, revision, coordinates and content hash. The host verifies actual content locally." - changed
Output schema / properties / final_review_report / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Structured synthesis stored with a review-bound orchestration session.", - "properties": { - "coverage_gaps": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "finding_candidates": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "candidate_id": { - "pattern": "^F-[0-9]{2,}$", - "type": "string" - }, - "confidence": { - "enum": [ - "high", - "medium", - "low" - ], - "type": "string" - }, - "description": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "minItems": 1, - "type": "array" - }, - "source_profiles": { - "items": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "title": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "verification_gap": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "candidate_id", - "title", - "description", - "confidence", - "verification_gap", - "evidence_refs", - "source_profiles" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - }, - "profiles_reviewed": { - "items": { - "enum": [ - "pr_test_analyzer", - "code_reviewer", - "security_reviewer", - "silent_failure_hunter", - "code_explorer", - "typescript_reviewer", - "react_reviewer", - "ruby_reviewer", - "python_reviewer", - "mobile_reviewer" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "summary": { - "maxLength": 5000, - "minLength": 1, - "type": "string" - }, - "unverified": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "evidence_refs": { - "default": [], - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 32, - "type": "array" - }, - "text": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "text" - ], - "type": "object" - }, - "maxItems": 100, - "type": "array" - } - }, - "required": [ - "summary", - "profiles_reviewed" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Structured synthesis stored with a review-bound orchestration session.", + "properties": { + "candidate_decisions": { + "default": [], + "description": "One host decision per submitted candidate; absent on legacy saved reports.", + "items": { + "additionalProperties": false, + "description": "The host's disposition of one profile-local candidate.", + "properties": { + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "final_finding_id": { + "anyOf": [ + { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "rationale": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "source": { + "additionalProperties": false, + "description": "A profile-local candidate that contributed to one synthesized finding.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + } + }, + "required": [ + "profile", + "candidate_id" + ], + "type": "object" + }, + "verdict": { + "enum": [ + "confirmed", + "rejected", + "duplicate", + "unverified" + ], + "type": "string" + } + }, + "required": [ + "source", + "verdict", + "rationale", + "evidence_refs" + ], + "type": "object" + }, + "maxItems": 1000, + "type": "array" + }, + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "affected_area": { + "anyOf": [ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Affected user flow or system area, when supported by the evidence." + }, + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "impact": { + "anyOf": [ + { + "maxLength": 2000, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete effect on users or contracts; severity remains host-owned." + }, + "severity": { + "anyOf": [ + { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Impact severity selected by the host for a confirmed finding." + }, + "source_candidates": { + "default": [], + "description": "Required for new final reports; empty only on reports persisted before source linkage.", + "items": { + "additionalProperties": false, + "description": "A profile-local candidate that contributed to one synthesized finding.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + } + }, + "required": [ + "profile", + "candidate_id" + ], + "type": "object" + }, + "type": "array" + }, + "source_locations": { + "default": [], + "description": "Precise source locations supporting this candidate when available.", + "items": { + "additionalProperties": false, + "description": "A stable source locator for a finding candidate.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "start_line": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "path", + "start_line" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "source_profiles": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs", + "source_profiles" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profiles_reviewed": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "summary": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "summary", + "profiles_reviewed" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / profile_reports / items / properties / execution_metricsAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Optional host-reported timing and token counts for one completed profile.", + "properties": { + "attempt_count": { + "default": 1, + "maximum": 4, + "minimum": 1, + "type": "integer" + }, + "completed_at": { + "format": "date-time", + "type": "string" + }, + "input_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "output_tokens": { + "anyOf": [ + { + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "started_at": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "started_at", + "completed_at" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional host-reported execution data; the orchestrator does not verify it." +} - added
Output schema / properties / profile_reports / items / properties / finding_candidates / items / properties / affected_areaAdded value: +{ + "anyOf": [ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Affected user flow or system area, when supported by the evidence." +} - added
Output schema / properties / profile_reports / items / properties / finding_candidates / items / properties / impactAdded value: +{ + "anyOf": [ + { + "maxLength": 2000, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Concrete effect on users or contracts; severity remains host-owned." +} - added
Output schema / properties / profile_reports / items / properties / finding_candidates / items / properties / source_locationsAdded value: +{ + "default": [], + "description": "Precise source locations supporting this candidate when available.", + "items": { + "additionalProperties": false, + "description": "A stable source locator for a finding candidate.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "start_line": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "path", + "start_line" + ], + "type": "object" + }, + "maxItems": 20, + "type": "array" +} - added
Output schema / properties / profile_reports / maxItemsAdded value: +10 - added
Output schema / properties / recommended_profilesAdded value: +{ + "description": "File-type-based profile hints only; the host selects the route.", + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "type": "array" +} - changed
Output schema / properties / review_context / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Immutable identifiers for the exact source and evidence packet reviewed.", - "properties": { - "base_sha": { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - "changed_files": { - "items": { - "type": "string" - }, - "maxItems": 500, - "minItems": 1, - "type": "array" - }, - "diff_sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "evidence_packet_sha256": { - "pattern": "(?i)^[a-f0-9]{64}$", - "type": "string" - }, - "evidence_refs": { - "items": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 1, - "type": "array" - }, - "head_sha": { - "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", - "type": "string" - }, - "repository": { - "maxLength": 512, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "repository", - "base_sha", - "head_sha", - "diff_sha256", - "evidence_packet_sha256", - "changed_files", - "evidence_refs" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Immutable identifiers for the exact source and evidence packet reviewed.", + "properties": { + "base_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "changed_files": { + "items": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 500, + "minItems": 1, + "type": "array" + }, + "diff_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 1, + "type": "array" + }, + "evidence_registry": { + "default": [], + "description": "Optional complete ref-to-source registry with revision, coordinates and hashes.", + "items": { + "additionalProperties": false, + "description": "Metadata for one evidence item; raw content remains with the host.", + "properties": { + "end_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "evidence_ref": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "kind": { + "enum": [ + "source", + "diff", + "requirement", + "runtime", + "other" + ], + "type": "string" + }, + "locator": { + "anyOf": [ + { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "path": { + "anyOf": [ + { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "revision": { + "anyOf": [ + { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "start_line": { + "anyOf": [ + { + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "evidence_ref", + "kind", + "sha256" + ], + "type": "object" + }, + "maxItems": 1000, + "type": "array" + }, + "head_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "repository": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "repository", + "base_sha", + "head_sha", + "diff_sha256", + "evidence_packet_sha256", + "changed_files", + "evidence_refs" + ], + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / revisionAdded value: +{ + "default": 0, + "description": "Workflow revision for conditional writes.", + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / risk_signalsAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Host-supplied escalation signals with the rationale and refs that support them.", + "properties": { + "cross_system_scope": { + "default": false, + "description": "The relevant behavior crosses repository, service, or system boundaries.", + "type": "boolean" + }, + "evidence_conflict": { + "default": false, + "description": "Relevant authoritative evidence sources disagree.", + "type": "boolean" + }, + "evidence_refs": { + "default": [], + "description": "Evidence Packet references supporting the enabled signals.", + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "evidence_uncertain": { + "default": false, + "description": "A specific material conclusion remains uncertain, and a scoped read-only review could plausibly resolve it. Do not set solely because CI, Stage, or runtime checks were not run.", + "type": "boolean" + }, + "high_blast_radius": { + "default": false, + "description": "The change could affect many consumers, services, or data records.", + "type": "boolean" + }, + "high_risk_domain": { + "default": false, + "description": "The change affects a sensitive security, identity, payment, fraud, privacy, or access-control area.", + "type": "boolean" + }, + "multiple_plausible_causes": { + "default": false, + "description": "More than one plausible cause remains after investigation.", + "type": "boolean" + }, + "non_reproducible": { + "default": false, + "description": "The reported behavior cannot be reproduced under expected conditions.", + "type": "boolean" + }, + "rationale": { + "anyOf": [ + { + "maxLength": 2000, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Short explanation for the enabled signals; required when any signal is true." + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / properties / transition_receiptsAdded value: +{ + "description": "Bounded request hashes for safe replay; no raw transition payloads are stored.", + "items": { + "additionalProperties": false, + "properties": { + "applied_revision": { + "minimum": 1, + "type": "integer" + }, + "request_id": { + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$", + "type": "string" + }, + "request_sha256": { + "pattern": "^[a-f0-9]{64}$", + "type": "string" + } + }, + "required": [ + "request_id", + "request_sha256", + "applied_revision" + ], + "type": "object" + }, + "maxItems": 128, + "type": "array" +}
5 tool updates
v0.2.9- Changed
advance_qa_orchestration4 fields changed- added
Input schema / properties / profile_reportsAdded value: +{ + "anyOf": [ + { + "items": { + "additionalProperties": false, + "description": "Structured host-reported result for one completed specialist profile.", + "properties": { + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "evidence_map": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "description": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "evidence_ref": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + } + }, + "required": [ + "evidence_ref", + "description" + ], + "type": "object" + }, + "maxItems": 500, + "type": "array" + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "description": "A possible defect with evidence references; the host still decides whether it is confirmed.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "scope": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "profile", + "scope" + ], + "type": "object" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "For a review-context-bound session, one structured result per completed profile, in the same order. Every finding must cite Evidence Packet references. Omit for legacy sessions without review_context." +} - added
Output schema / properties / final_review_reportAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Structured synthesis stored with a review-bound orchestration session.", + "properties": { + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "source_profiles": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs", + "source_profiles" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profiles_reviewed": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "summary": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "summary", + "profiles_reviewed" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / properties / profile_reportsAdded value: +{ + "items": { + "additionalProperties": false, + "description": "Structured host-reported result for one completed specialist profile.", + "properties": { + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "evidence_map": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "description": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "evidence_ref": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + } + }, + "required": [ + "evidence_ref", + "description" + ], + "type": "object" + }, + "maxItems": 500, + "type": "array" + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "description": "A possible defect with evidence references; the host still decides whether it is confirmed.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "scope": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "profile", + "scope" + ], + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / review_contextAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Immutable identifiers for the exact source and evidence packet reviewed.", + "properties": { + "base_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "changed_files": { + "items": { + "type": "string" + }, + "maxItems": 500, + "minItems": 1, + "type": "array" + }, + "diff_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 1, + "type": "array" + }, + "head_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "repository": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "repository", + "base_sha", + "head_sha", + "diff_sha256", + "evidence_packet_sha256", + "changed_files", + "evidence_refs" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
finish_qa_orchestration4 fields changed- added
Input schema / properties / final_review_reportAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Structured synthesis stored with a review-bound orchestration session.", + "properties": { + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "source_profiles": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs", + "source_profiles" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profiles_reviewed": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "summary": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "summary", + "profiles_reviewed" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Structured synthesized findings and coverage for a review_context-bound session. Required when its outcome is completed; each finding cites registered evidence refs." +} - added
Output schema / properties / final_review_reportAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Structured synthesis stored with a review-bound orchestration session.", + "properties": { + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "source_profiles": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs", + "source_profiles" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profiles_reviewed": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "summary": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "summary", + "profiles_reviewed" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / properties / profile_reportsAdded value: +{ + "items": { + "additionalProperties": false, + "description": "Structured host-reported result for one completed specialist profile.", + "properties": { + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "evidence_map": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "description": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "evidence_ref": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + } + }, + "required": [ + "evidence_ref", + "description" + ], + "type": "object" + }, + "maxItems": 500, + "type": "array" + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "description": "A possible defect with evidence references; the host still decides whether it is confirmed.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "scope": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "profile", + "scope" + ], + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / review_contextAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Immutable identifiers for the exact source and evidence packet reviewed.", + "properties": { + "base_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "changed_files": { + "items": { + "type": "string" + }, + "maxItems": 500, + "minItems": 1, + "type": "array" + }, + "diff_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 1, + "type": "array" + }, + "head_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "repository": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "repository", + "base_sha", + "head_sha", + "diff_sha256", + "evidence_packet_sha256", + "changed_files", + "evidence_refs" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
get_qa_orchestration3 fields changed- added
Output schema / properties / final_review_reportAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Structured synthesis stored with a review-bound orchestration session.", + "properties": { + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "source_profiles": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs", + "source_profiles" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profiles_reviewed": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "summary": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "summary", + "profiles_reviewed" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / properties / profile_reportsAdded value: +{ + "items": { + "additionalProperties": false, + "description": "Structured host-reported result for one completed specialist profile.", + "properties": { + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "evidence_map": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "description": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "evidence_ref": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + } + }, + "required": [ + "evidence_ref", + "description" + ], + "type": "object" + }, + "maxItems": 500, + "type": "array" + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "description": "A possible defect with evidence references; the host still decides whether it is confirmed.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "scope": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "profile", + "scope" + ], + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / review_contextAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Immutable identifiers for the exact source and evidence packet reviewed.", + "properties": { + "base_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "changed_files": { + "items": { + "type": "string" + }, + "maxItems": 500, + "minItems": 1, + "type": "array" + }, + "diff_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 1, + "type": "array" + }, + "head_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "repository": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "repository", + "base_sha", + "head_sha", + "diff_sha256", + "evidence_packet_sha256", + "changed_files", + "evidence_refs" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
list_qa_orchestrations5 fields changed- changed
Output schema / properties / sessions / items / descriptionPrevious value: -"Content-free metadata for identifying a retained session."New value: +"Bounded metadata for finding a retained orchestration session." - added
Output schema / properties / sessions / items / properties / has_review_artifactsAdded value: +{ + "default": false, + "type": "boolean" +} - added
Output schema / properties / sessions / items / properties / review_diff_sha256Added value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / properties / sessions / items / properties / review_head_shaAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / properties / sessions / items / properties / review_repositoryAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
start_qa_orchestration4 fields changed- added
Input schema / properties / review_contextAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Immutable identifiers for the exact source and evidence packet reviewed.", + "properties": { + "base_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "changed_files": { + "items": { + "type": "string" + }, + "maxItems": 500, + "minItems": 1, + "type": "array" + }, + "diff_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 1, + "type": "array" + }, + "head_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "repository": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "repository", + "base_sha", + "head_sha", + "diff_sha256", + "evidence_packet_sha256", + "changed_files", + "evidence_refs" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional immutable repository, base/head, diff, and Evidence Packet identity. When supplied, every completed profile must include a structured report whose evidence references belong to this packet; completed outcomes require a final report." +} - added
Output schema / properties / final_review_reportAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Structured synthesis stored with a review-bound orchestration session.", + "properties": { + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "source_profiles": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs", + "source_profiles" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profiles_reviewed": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "summary": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "summary", + "profiles_reviewed" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / properties / profile_reportsAdded value: +{ + "items": { + "additionalProperties": false, + "description": "Structured host-reported result for one completed specialist profile.", + "properties": { + "coverage_gaps": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "evidence_map": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "description": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "evidence_ref": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + } + }, + "required": [ + "evidence_ref", + "description" + ], + "type": "object" + }, + "maxItems": 500, + "type": "array" + }, + "finding_candidates": { + "default": [], + "items": { + "additionalProperties": false, + "description": "A possible defect with evidence references; the host still decides whether it is confirmed.", + "properties": { + "candidate_id": { + "pattern": "^F-[0-9]{2,}$", + "type": "string" + }, + "confidence": { + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "description": { + "maxLength": 5000, + "minLength": 1, + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "title": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "verification_gap": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "candidate_id", + "title", + "description", + "confidence", + "verification_gap", + "evidence_refs" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "scope": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + }, + "unverified": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "evidence_refs": { + "default": [], + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 32, + "type": "array" + }, + "text": { + "maxLength": 2000, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "maxItems": 100, + "type": "array" + } + }, + "required": [ + "profile", + "scope" + ], + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / review_contextAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "description": "Immutable identifiers for the exact source and evidence packet reviewed.", + "properties": { + "base_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "changed_files": { + "items": { + "type": "string" + }, + "maxItems": 500, + "minItems": 1, + "type": "array" + }, + "diff_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_packet_sha256": { + "pattern": "(?i)^[a-f0-9]{64}$", + "type": "string" + }, + "evidence_refs": { + "items": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 1, + "type": "array" + }, + "head_sha": { + "pattern": "(?i)^(?:[a-f0-9]{40}|[a-f0-9]{64})$", + "type": "string" + }, + "repository": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "repository", + "base_sha", + "head_sha", + "diff_sha256", + "evidence_packet_sha256", + "changed_files", + "evidence_refs" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null +}
7 tool updates
v0.2.5- Changed
advance_qa_orchestration10 fields changed- changed
Input schema / properties / completed_profile / descriptionPrevious value: -"After each successful primary-review step, submit exactly the current_profile returned by the previous advance_qa_orchestration call. Omit for other steps or an early stop."New value: +"Legacy-compatible single-profile completion. After the complete execution_group has finished, submit exactly the current_profile returned by the latest advance_qa_orchestration call and follow fixed route order; never advance parallel profiles concurrently. Use completed_profiles to record a whole group in one call. Omit for other steps or an early stop." - added
Input schema / properties / completed_profilesAdded value: +{ + "anyOf": [ + { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "After the whole next execution_group has finished, submit every profile in that group exactly once and in fixed route order. This records the group in one call. For a bundle, the list must match the next complete group; for one profile, submit a one-item list. Mutually exclusive with completed_profile. Omit for other steps or an early stop." +} - changed
Input schema / properties / completed_step / descriptionPrevious value: -"Active step returned in current_step and completed by this call: triage, primary_review, deep_review, or synthesis. When current_step is awaiting_host_outcome, call finish_qa_orchestration instead."New value: +"Required: copy the exact current_step from the latest session returned by start, advance, or get. Complete only triage, primary_review, deep_review, or synthesis. If current_step is awaiting_host_outcome, call finish_qa_orchestration instead." - changed
Input schema / properties / risk_signals / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Content-free, host-supplied signals used for deterministic escalation.", - "properties": { - "cross_system_scope": { - "default": false, - "description": "The relevant behavior crosses repository, service, or system boundaries.", - "type": "boolean" - }, - "evidence_conflict": { - "default": false, - "description": "Relevant authoritative evidence sources disagree.", - "type": "boolean" - }, - "evidence_uncertain": { - "default": false, - "description": "A material conclusion depends on evidence that is missing or cannot be verified.", - "type": "boolean" - }, - "high_blast_radius": { - "default": false, - "description": "The change could affect many consumers, services, or data records.", - "type": "boolean" - }, - "high_risk_domain": { - "default": false, - "description": "The change affects a sensitive security, identity, payment, fraud, privacy, or access-control area.", - "type": "boolean" - }, - "multiple_plausible_causes": { - "default": false, - "description": "More than one plausible cause remains after investigation.", - "type": "boolean" - }, - "non_reproducible": { - "default": false, - "description": "The reported behavior cannot be reproduced under expected conditions.", - "type": "boolean" - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Content-free, host-supplied signals used for deterministic escalation.", + "properties": { + "cross_system_scope": { + "default": false, + "description": "The relevant behavior crosses repository, service, or system boundaries.", + "type": "boolean" + }, + "evidence_conflict": { + "default": false, + "description": "Relevant authoritative evidence sources disagree.", + "type": "boolean" + }, + "evidence_uncertain": { + "default": false, + "description": "A specific material conclusion remains uncertain, and a scoped read-only review could plausibly resolve it. Do not set solely because CI, Stage, or runtime checks were not run.", + "type": "boolean" + }, + "high_blast_radius": { + "default": false, + "description": "The change could affect many consumers, services, or data records.", + "type": "boolean" + }, + "high_risk_domain": { + "default": false, + "description": "The change affects a sensitive security, identity, payment, fraud, privacy, or access-control area.", + "type": "boolean" + }, + "multiple_plausible_causes": { + "default": false, + "description": "More than one plausible cause remains after investigation.", + "type": "boolean" + }, + "non_reproducible": { + "default": false, + "description": "The reported behavior cannot be reproduced under expected conditions.", + "type": "boolean" + } + }, + "type": "object" + }, + { + "type": "null" + } +] - changed
Input schema / properties / selected_bundle / descriptionPrevious value: -"For completed triage, choose one allowed fixed bundle for a broad or cross-concern review. It is mutually exclusive with selected_profile; recommended_bundles is only a shortlist."New value: +"For completed triage, choose one fixed bundle only for broad, cross-concern, or high-risk work; several changed files alone do not require one. It is mutually exclusive with selected_profile; recommended_bundles is only a shortlist." - changed
Input schema / properties / selected_profile / descriptionPrevious value: -"For completed triage, choose one allowed profile for a narrow, low-risk review. It is mutually exclusive with selected_bundle."New value: +"For completed triage, default to one allowed profile for a narrow, single-concern, low-risk review. It is mutually exclusive with selected_bundle." - added
Input schema / properties / skip_synthesisAdded value: +{ + "default": false, + "description": "Optional clean-review fast path. Set true only after one selected profile reports no findings or unresolved material questions and every risk signal is false. The host still validates and reports the final QA result; the server trusts this host claim and cannot verify review content. Bundles, findings, unresolved questions, or any risk signal require the normal synthesis stage.", + "type": "boolean" +} - changed
Input schema / properties / status / descriptionPrevious value: -"Use completed after the active step succeeds. Use partial or blocked to stop early; then finalize with the same outcome using finish_qa_orchestration."New value: +"Required on every call, including successful steps: use completed when the active step succeeds. Use partial or blocked only to stop early, then finalize with the same outcome using finish_qa_orchestration." - changed
Output schema / properties / model_policy / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "model": { - "anyOf": [ - { - "enum": [ - "gpt-6-luna", - "gpt-6-sol" - ], - "type": "string" - }, - { - "type": "string" - } - ] - }, - "provider": { - "default": "openai", - "enum": [ - "openai", - "anthropic" - ], - "type": "string" - }, - "reasoning": { - "enum": [ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" - ], - "type": "string" - }, - "reasoning_capabilities_verified": { - "default": false, - "type": "boolean" - } - }, - "required": [ - "model", - "reasoning" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "configured", + "default": "configured", + "type": "string" + }, + "model": { + "anyOf": [ + { + "enum": [ + "gpt-6-luna", + "gpt-6-sol" + ], + "type": "string" + }, + { + "type": "string" + } + ] + }, + "provider": { + "default": "openai", + "enum": [ + "openai", + "anthropic" + ], + "type": "string" + }, + "reasoning": { + "enum": [ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max" + ], + "type": "string" + }, + "reasoning_capabilities_verified": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "model", + "reasoning" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "host_default", + "default": "host_default", + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / selected_review_routesAdded value: +{ + "anyOf": [ + { + "properties": { + "execution_groups": { + "description": "Ordered execution waves whose flattened profile IDs exactly match routes. Run the groups in order; profiles in the same group are independent and may be reviewed concurrently by the host. Wait for every profile in a group before reporting it with one completed_profiles call in the declared order. Older hosts may report each completed_profile separately.", + "items": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "type": "array" + }, + "minItems": 1, + "type": "array" + }, + "routes": { + "description": "Detailed checklists in the selected route's declared profile order. Each route is a fixed, read-only checklist; it does not execute a review.", + "items": { + "properties": { + "constraints": { + "description": "Shared limits for this read-only review profile.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "display_name": { + "minLength": 1, + "type": "string" + }, + "escalation_signals": { + "description": "Conditions to assess against evidence. A listed condition is not itself a deep-review trigger; set risk_signals only when the corresponding evidence-based condition applies.", + "items": { + "type": "string" + }, + "type": "array" + }, + "focus": { + "description": "The profile's review boundary and primary responsibility.", + "minLength": 1, + "type": "string" + }, + "host_owns_decisions": { + "const": true, + "default": true, + "type": "boolean" + }, + "profile": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "read_only": { + "const": true, + "default": true, + "type": "boolean" + }, + "required_sections": { + "description": "Profile-specific output sections; use these instead of a generic template.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "profile", + "display_name", + "focus", + "required_sections", + "constraints" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "routes", + "execution_groups" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "After a successful triage selection, the exact checklists and execution groups for the selected route. Use this instead of a separate prepare call. This response-only field is not stored in the session." +}
- Changed
finish_qa_orchestration1 field changed- changed
Output schema / properties / model_policy / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "model": { - "anyOf": [ - { - "enum": [ - "gpt-6-luna", - "gpt-6-sol" - ], - "type": "string" - }, - { - "type": "string" - } - ] - }, - "provider": { - "default": "openai", - "enum": [ - "openai", - "anthropic" - ], - "type": "string" - }, - "reasoning": { - "enum": [ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" - ], - "type": "string" - }, - "reasoning_capabilities_verified": { - "default": false, - "type": "boolean" - } - }, - "required": [ - "model", - "reasoning" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "configured", + "default": "configured", + "type": "string" + }, + "model": { + "anyOf": [ + { + "enum": [ + "gpt-6-luna", + "gpt-6-sol" + ], + "type": "string" + }, + { + "type": "string" + } + ] + }, + "provider": { + "default": "openai", + "enum": [ + "openai", + "anthropic" + ], + "type": "string" + }, + "reasoning": { + "enum": [ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max" + ], + "type": "string" + }, + "reasoning_capabilities_verified": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "model", + "reasoning" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "host_default", + "default": "host_default", + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_qa_orchestration1 field changed- changed
Output schema / properties / model_policy / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "model": { - "anyOf": [ - { - "enum": [ - "gpt-6-luna", - "gpt-6-sol" - ], - "type": "string" - }, - { - "type": "string" - } - ] - }, - "provider": { - "default": "openai", - "enum": [ - "openai", - "anthropic" - ], - "type": "string" - }, - "reasoning": { - "enum": [ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" - ], - "type": "string" - }, - "reasoning_capabilities_verified": { - "default": false, - "type": "boolean" - } - }, - "required": [ - "model", - "reasoning" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "configured", + "default": "configured", + "type": "string" + }, + "model": { + "anyOf": [ + { + "enum": [ + "gpt-6-luna", + "gpt-6-sol" + ], + "type": "string" + }, + { + "type": "string" + } + ] + }, + "provider": { + "default": "openai", + "enum": [ + "openai", + "anthropic" + ], + "type": "string" + }, + "reasoning": { + "enum": [ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max" + ], + "type": "string" + }, + "reasoning_capabilities_verified": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "model", + "reasoning" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "host_default", + "default": "host_default", + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } +]
- Changed
get_qa_orchestration_catalog2 fields changed- added
Output schema / properties / bundles / items / properties / execution_groupsAdded value: +{ + "description": "Ordered execution waves. Profiles in the same group are independent and may be reviewed concurrently; finish each group before starting the next.", + "items": { + "items": { + "enum": [ + "pr_test_analyzer", + "code_reviewer", + "security_reviewer", + "silent_failure_hunter", + "code_explorer", + "typescript_reviewer", + "react_reviewer", + "ruby_reviewer", + "python_reviewer", + "mobile_reviewer" + ], + "type": "string" + }, + "type": "array" + }, + "type": "array" +} - changed
Output schema / properties / bundles / items / requiredPrevious value: -[ - "bundle", - "when_to_use", - "profiles" -]New value: +[ + "bundle", + "when_to_use", + "profiles", + "execution_groups" +]
- Changed
get_qa_orchestration_model_policy56 fields changed- changed
Output schema / descriptionPrevious value: -"The model IDs the host agent should use for each orchestration role."New value: +"Flat MCP response shape for configured and host-default model policies." - added
Output schema / properties / deep_model / anyOfAdded value: +[ + { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$", + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / deep_model / defaultAdded value: +null - removed
Output schema / properties / deep_model / maxLengthRemoved value: -128 - removed
Output schema / properties / deep_model / minLengthRemoved value: -1 - removed
Output schema / properties / deep_model / patternRemoved value: -"^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$" - added
Output schema / properties / deep_model / titleAdded value: +"Deep Model" - removed
Output schema / properties / deep_model / typeRemoved value: -"string" - added
Output schema / properties / deep_reasoning / anyOfAdded value: +[ + { + "enum": [ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max" + ], + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / properties / deep_reasoning / defaultPrevious value: -"high"New value: +null - removed
Output schema / properties / deep_reasoning / enumRemoved value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -] - added
Output schema / properties / deep_reasoning / titleAdded value: +"Deep Reasoning" - removed
Output schema / properties / deep_reasoning / typeRemoved value: -"string" - added
Output schema / properties / modeAdded value: +{ + "enum": [ + "configured", + "host_default" + ], + "title": "Mode", + "type": "string" +} - added
Output schema / properties / primary_model / anyOfAdded value: +[ + { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$", + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / primary_model / defaultAdded value: +null - removed
Output schema / properties / primary_model / maxLengthRemoved value: -128 - removed
Output schema / properties / primary_model / minLengthRemoved value: -1 - removed
Output schema / properties / primary_model / patternRemoved value: -"^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$" - added
Output schema / properties / primary_model / titleAdded value: +"Primary Model" - removed
Output schema / properties / primary_model / typeRemoved value: -"string" - added
Output schema / properties / primary_reasoning / anyOfAdded value: +[ + { + "enum": [ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max" + ], + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / properties / primary_reasoning / defaultPrevious value: -"medium"New value: +null - removed
Output schema / properties / primary_reasoning / enumRemoved value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -] - added
Output schema / properties / primary_reasoning / titleAdded value: +"Primary Reasoning" - removed
Output schema / properties / primary_reasoning / typeRemoved value: -"string" - added
Output schema / properties / provider / anyOfAdded value: +[ + { + "enum": [ + "openai", + "anthropic" + ], + "title": "ModelProvider", + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / provider / defaultAdded value: +null - removed
Output schema / properties / provider / enumRemoved value: -[ - "openai", - "anthropic" -] - removed
Output schema / properties / provider / typeRemoved value: -"string" - added
Output schema / properties / synthesis_model / anyOfAdded value: +[ + { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$", + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / synthesis_model / defaultAdded value: +null - removed
Output schema / properties / synthesis_model / maxLengthRemoved value: -128 - removed
Output schema / properties / synthesis_model / minLengthRemoved value: -1 - removed
Output schema / properties / synthesis_model / patternRemoved value: -"^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$" - added
Output schema / properties / synthesis_model / titleAdded value: +"Synthesis Model" - removed
Output schema / properties / synthesis_model / typeRemoved value: -"string" - added
Output schema / properties / synthesis_reasoning / anyOfAdded value: +[ + { + "enum": [ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max" + ], + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / properties / synthesis_reasoning / defaultPrevious value: -"medium"New value: +null - removed
Output schema / properties / synthesis_reasoning / enumRemoved value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -] - added
Output schema / properties / synthesis_reasoning / titleAdded value: +"Synthesis Reasoning" - removed
Output schema / properties / synthesis_reasoning / typeRemoved value: -"string" - added
Output schema / properties / triage_model / anyOfAdded value: +[ + { + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$", + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / triage_model / defaultAdded value: +null - removed
Output schema / properties / triage_model / maxLengthRemoved value: -128 - removed
Output schema / properties / triage_model / minLengthRemoved value: -1 - removed
Output schema / properties / triage_model / patternRemoved value: -"^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$" - added
Output schema / properties / triage_model / titleAdded value: +"Triage Model" - removed
Output schema / properties / triage_model / typeRemoved value: -"string" - added
Output schema / properties / triage_reasoning / anyOfAdded value: +[ + { + "enum": [ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max" + ], + "type": "string" + }, + { + "type": "null" + } +] - changed
Output schema / properties / triage_reasoning / defaultPrevious value: -"max"New value: +null - removed
Output schema / properties / triage_reasoning / enumRemoved value: -[ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" -] - added
Output schema / properties / triage_reasoning / titleAdded value: +"Triage Reasoning" - removed
Output schema / properties / triage_reasoning / typeRemoved value: -"string" - changed
Output schema / requiredPrevious value: -[ - "provider", - "triage_model", - "primary_model", - "deep_model", - "synthesis_model" -]New value: +[ + "mode" +] - added
Output schema / titleAdded value: +"ModelPolicyResponse"
- Added
prepare_qa_orchestration_bundle - Changed
start_qa_orchestration1 field changed- changed
Output schema / properties / model_policy / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "model": { - "anyOf": [ - { - "enum": [ - "gpt-6-luna", - "gpt-6-sol" - ], - "type": "string" - }, - { - "type": "string" - } - ] - }, - "provider": { - "default": "openai", - "enum": [ - "openai", - "anthropic" - ], - "type": "string" - }, - "reasoning": { - "enum": [ - "none", - "minimal", - "low", - "medium", - "high", - "xhigh", - "max" - ], - "type": "string" - }, - "reasoning_capabilities_verified": { - "default": false, - "type": "boolean" - } - }, - "required": [ - "model", - "reasoning" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "configured", + "default": "configured", + "type": "string" + }, + "model": { + "anyOf": [ + { + "enum": [ + "gpt-6-luna", + "gpt-6-sol" + ], + "type": "string" + }, + { + "type": "string" + } + ] + }, + "provider": { + "default": "openai", + "enum": [ + "openai", + "anthropic" + ], + "type": "string" + }, + "reasoning": { + "enum": [ + "none", + "minimal", + "low", + "medium", + "high", + "xhigh", + "max" + ], + "type": "string" + }, + "reasoning_capabilities_verified": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "model", + "reasoning" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "host_default", + "default": "host_default", + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } +]
1 tool update
v0.2.0- Added
delete_qa_orchestration
TDQS
Scored across 11 tools
Most tools have clearly distinct lifecycle roles, but the three stateless lookup tools (get_qa_orchestration_catalog, prepare_qa_orchestration, prepare_qa_orchestration_bundle) all return bundled review definitions and could be momentarily confused despite descriptions clarifying their scope.
All names follow a predictable snake_case verb_qa_orchestration(s) pattern with consistent prefixes (start, prepare, get, advance, renew, list, delete, finish). Minor noun suffix variation (catalog, model_policy, bundle) is descriptive rather than inconsistent.
11 tools map cleanly to the QA session lifecycle plus stateless lookups; none appear redundant, and the set is well within the typical 3-15 range for a focused orchestration server.
Covers create, advance, finalize, read, list, delete, renew, plus preparation, catalog, and model-policy lookups—full lifecycle with recovery paths for lost session IDs. No obvious operational gap for the stated QA orchestration scope.
Maintenance
Related MCP Connectors
Hosted MCP for denial, prior auth, reimbursement, workflow validation, batch scoring, and feedback.
The MCP server that vets MCP servers: identity, risk grade and per-tool risk before you install.
Hybrid human + AI expertise for faster, trusted answers and decisions via MCP Server.
A paid remote MCP for hosted MCP server, built to return verdicts, receipts, usage logs, and audit-r
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for healthcare claims workflow scoring, validation, and feedback, supporting denial risk, prior authorization, and reimbursement assessment.8MIT
- FlicenseAqualityFmaintenanceA local MCP server for governed support-ticket triage that reads synthetic tickets and knowledge articles, prepares evidence-backed recommendations, and records local audit events.9-
- AlicenseCqualityDmaintenanceAn MCP server that guides QA and verification processes by breaking down tasks into manageable steps and providing LLM-driven, confidence-scored tool recommendations.111 npm6MIT
- AlicenseAqualityCmaintenanceA self-hosted MCP server offering provider-independent AI routing, deterministic verification, and cryptographically signed, tamper-evident audit trails for every response.814 npm2MIT