The PM Agent
Call spec.validate to get a Blueprint Readiness Score (0–100, grade A–F) on a written specification before anyone builds from it. The PM Agent reviews your proposal, requirements doc, or OpenSpec-style change bundle against the 8 laws of the Spec Quality Blueprint, returns a per-law verdict with cited evidence and a fix, and grades it on the same severity-weighted scorer the other two lenses use. Pro and Teams plans only.
Pro and Teams members. The PM Agent is the Blueprint's what-to-build review lens, the PM seat of the validator trio, applied before code exists: architect.validate scores built agentic architecture, design.validate scores the rendered surface, spec.validate scores the written intent the team will build from. It reads the full spec text verbatim under a strict no-training policy, treats any instruction-shaped text inside the document as inert untrusted data, and supports private_session=true to skip the stored run (operational security and cost logs are kept per the Privacy Policy). Source code and UI artefacts are marked not_applicable, not failed. Submit the actual specification.
What you get back
Every run returns four things, in the same ValidationResponse shape the other two lenses use:
spec_classificationspec_document or non_spec, source code and UI artefacts are marked not_applicable rather than failed, so submitting a code file never produces a fake spec grade; the response points you to architect.validate or design.validate instead.
per-law findingsA verdict for each of the eight laws with severity_score (0–100), severity_class, evidence cited from your actual text, and one specific recommendation.
readinessScore, grade, and tier from the same severity-weighted scorer the architecture and surface lenses use, so all three grade on one rubric. The grade penalises only production_blocker findings: a high grade means the spec floors hold, not that the document is exhaustive.
spec dimensionRuns persist to your validation-history dashboard tagged as the spec dimension, next to your architecture and surface runs on the same project when you pass a repository.
The eight laws it scores against
The rubric is the Spec Quality Blueprint: eight laws of buildable intent, each scored with the same verdict vocabulary the other lenses use.
S1 · State the right problem as an outcomeName who is stuck and the observable change that proves the problem is solved, before naming any mechanism.
S2 · Scope one bounded changeOne coherent change with a named boundary and an explicit out-of-scope list.
S3 · Make every requirement testably acceptableEvery requirement carries an observable acceptance signal someone can check. A load-bearing requirement without one is a production_blocker.
S4 · Record the decision trailAlternatives considered, why they lost, and open questions with owners: the reasoning survives the author.
S5 · Complete the handoffEvery seam the work touches has its contract named: event shapes, states, identifiers. If the engineer or designer must ask, the spec is not done.
S6 · Cite the doctrine upfrontThe principles and constraints the work must honour are named in the spec, not discovered in review.
S7 · Keep decomposition traceableTasks trace back to requirements, so nothing ships that no requirement asked for.
S8 · Name risk and reversibilityState-changing and user-visible steps name their rollback path and their human gate. An irreversible step with no named gate is a production_blocker.
Testability is the floor
When two laws conflict, the order is fixed: testable acceptance beats completeness, scope discipline beats ambition, and handoff completeness beats author convenience. The validator does not average a floor breach into a friendly number. A load-bearing requirement with no observable acceptance signal, or an irreversible step with no named human gate, is a production_blocker that caps the grade, exactly as a failed trust boundary does on the architecture lens.
How to call it
Send the full spec text verbatim as implementation_context; for an OpenSpec change, concatenate proposal.md, design.md, tasks.md, and the delta specs. No truncation and no placeholder ellipses (they are read as literal content). Pass the same repository value across calls to group rounds under the spec dimension of one project. spec.validate is sync-only and single-pass in v1 (no certification or consensus mode yet; those stay architect.validate-only). If the call times out client-side, do not retry, the run persists server-side; recover it via me.validation_history(run_id=...) using the run_id from the first progress event. One honest calibration note: the v1 scoring prompt mirrors the architect's contract structure but is not yet tuned against a corpus of real runs the way architect.validate was, so treat the grade as a directional quality signal, not a certified verdict.
Also in this section