VERIFISDK docsengine v2 · contract 1.5.1 · harness-sdk 1.2.0
Appendix

Source provenance

Every file this site was written from, and how each claim was checked.


Every page here was written by reading source, not by recalling an API. This page records what was read so a later reader can re-verify, and so a stale page is detectable.

Written: 2026-08-17. Revised: 2026-08-18 against @pragyacyber/engine-contract@1.5.1, @pragyacyber/harness-sdk@1.2.0 and @pragyacyber/mcp-sdk@0.1.0.

Files read in full

@pragyacyber/harness-sdk @ 1.2.0

FilePages it grounds
src/index.tsexport surface
src/define-harness.tsdefineHarness
src/runtime.tsRun lifecycle, Models — the credential resolver
src/mcp-client.tsTools and slots
src/failover.tsTools and slots
src/budget-ledger.tsThe budget ledger
src/grpc-channel.tsThe engine channel
src/model-client.tsModels — re-read at 1.1.0 for the contract-routed model path, and again at 1.2.0 for the per-role keyed-model env resolution in createModelResolver
README.mdcorroboration

@pragyacyber/engine-contract @ 1.5.1

FilePages it grounds
src/index.ts, src/version.tsContract overview
src/enums.tsContract overview, The three gates
src/reference.tsRegistry objects
src/registration.ts + registration.test.tsRegistering a component
src/model-invocation.ts + model-invocation.test.tsModels
src/raw-finding.ts + raw-finding.test.tsFindings and events, The finding model
src/service.ts, src/run.ts, src/domain.tsService, TestInput, Run
src/finding.tsThe finding model
src/event.tsEvents and alerts
src/budget.tsThe budget ledger
proto/engine_channel.protoThe engine channel
README.mdcorroboration

Exported but not documented, because they are outside what a harness or MCP author needs: src/schedule.ts, src/approval.ts, src/residency.ts. src/contract-diff.ts is a build tool and is not exported from the package root.

verifi-engine

FilePages it grounds
src/registry/three-gate-probe.tsThe three gates, Conformance
src/registry/model-probe.tsModels, Operating principles
src/registry/harness-probe.tsPackaging and boot
src/registry/registry.ts, slot-resolver.ts, preflight.tsRegistry objects, Conformance
src/api/orchestrator-routes.ts (the /registries routes)Registering a component, Conformance
src/findings/finding-store.ts (normaliseFinding, the severity allow-list)Findings and events

harnesses/asm-harness — the reference harness

FilePages it grounds
sdk/harness.tsevery harness page
sdk/main.tsPackaging and boot
sdk/findings.tsFindings and events
sdk/kali-fs-sync.tsTools and slots
Dockerfile, package.json, README.mdPackaging and boot

verifi-mcps — the reference MCPs

FilePages it grounds
asm/server.pyBuilding an MCP, The three gates
kali/server.pyBuilding an MCP, Tools and HITL, Statelessness

@pragyacyber/mcp-sdk @ 0.1.0

Now read in full and documented, including the reason its server is not a deployment path.

FilePages it grounds
src/define-mcp.tsAuthoring rules the SDK enforces
src/server.tsThe TypeScript MCP SDK, Known gaps
src/conformance.tsStatelessness and sharing

How claims were checked

Three levels, and the pages say which applies.

Executed. The Quickstart harness and its local runner were written into a scratch project against the built harness-sdk@1.0.0 and a 1.5.1 build of the contract, type-checked with tsc --noEmit (exit 0), and run with tsx on Node 22. The console output shown on that page is the real output of that run, on both the normal and the dry-run path.

Contract invariants were checked by parsing real objects and calling real functions against 1.5.1. Abridged:

CONTRACT_VERSION 1.5.1
isCompatible 1.0.0 -> true | 2.0.0 -> false | 1.0 -> false

buildModelRequest bedrock 'anthropic.claude-3-5-sonnet-…'  -> anthropic body
buildModelRequest bedrock 'us.anthropic.claude-opus-4-8'   -> anthropic body, path keeps 'us.'
buildModelRequest bedrock '{eu,apac,global,us-gov}.amazon.nova-pro-v1:0' -> nova body
buildModelRequest bedrock 'us.meta.llama3-1-70b-…'         -> THROWS (unknown family)
modelEndpoint openai_compat {}                             -> THROWS (needs baseUrl)
modelEndpoint bedrock {}                                   -> THROWS (needs region)
parseModelResponse anthropic { nonsense: true }            -> 0 tokens, no guess

zModelRegistration + {status|probe|probeInvoked|tools|authRef|lastProbedAt}  -> all REFUSED
zModelRegistration bedrock without region                  -> REFUSED
zModelRegistration keyed without apiKey                    -> REFUSED
zModelRegistration without capabilities/costModel          -> accepted (1.4.3)
zMcpRegistration with neither endpoint nor image           -> REFUSED
zMcpRegistration concurrencyModel:'shared'                 -> REFUSED
zMcpRegistration defaults                                  -> transport http, sidecar
zHarnessRegistration imageDigest 'v1.2.0'                  -> REFUSED "must be a sha256 digest, not a tag"
zHarnessRegistration imageDigest omitted                   -> REFUSED
zRawFinding severity 'info' / 'informational'              -> accepted / REFUSED
zRawFinding + {reviewStatus|publishedAt|reviewedBy|clientVisible} -> all REFUSED
zRawFinding + rawOutput:{…}                                -> accepted (.passthrough)
zRawFinding affected:'https://x'                           -> REFUSED (must be an array of objects)
zEventType tool_error · mcp.fallback_used · mcp.no_healthy_tool
          · model_call · model_error · model_price_unknown -> all members (21 total)
computeDedupeKey(a, l, 'DNS') === computeDedupeKey(a, l, 'dns')
crossedThresholds([1,5,25], 6, [1]) -> [5]

defineHarness refusals were exercised directly: order: 0 and order: 1.5 throw, duplicate orders throw, models: [] throws, version: '1.0' throws. collectRunSecrets() was run against a synthetic environment — it collects MY_API_KEY and DB_PASSWORD and correctly ignores AWS_ACCESS_KEY_ID, KB_ENDPOINT_URL, a three-character SHORT_TOKEN, and NVIDIA_API_KEY=disabled.

The mcp-sdk finding on Known gaps was produced by building a server with defineMcp + buildMcpServer, starting it, and issuing both wire shapes against it. The transcript on that page is real output.

The SDK export lists on this site are enumerated, not transcribed:

node -e "import('@pragyacyber/harness-sdk').then(m=>console.log(Object.keys(m).sort().join('\n')))"
node -e "import('@pragyacyber/engine-contract').then(m=>console.log(Object.keys(m).sort().join('\n')))"

Read. Schema shapes, error messages, endpoint behaviour and Python MCP structure are quoted or paraphrased from source read in this pass. Code excerpts are verbatim or lightly elided, and elisions are marked.

Unverified. Anything that could not be checked is marked UNVERIFIED inline or listed on Known gaps. The main ones: how a HITL approval token reaches an MCP; whether any evidence-attachment path exists for a harness; whether an over-the-wire statelessness test exists anywhere; the engine-side registration and Service composition flow end to end; and how a harness's declared slots, model roles and phases reach the registry given that zHarnessRegistration carries none of them.

The diagrams

Every figure on this site is hand-authored inline SVG generated at build time from lib/diagrams.ts. Nothing in a diagram is decorative: each one is drawn from the same source read that produced the surrounding prose, and the labels carry real identifiers — mcp.fallback_used, computeDedupeKey, slotFills, threshold_breach — rather than paraphrases.

They carry no literal colours. Every stroke, fill and label resolves to a --c-* theme token, so the light and dark renderings are the same drawing and cannot drift apart.

Package access

The Getting the packages page describes GitHub Packages behaviour — the read:packages scope, the .npmrc variable expansion, cross-repo Actions grants, and the BuildKit secret pattern. The BuildKit Dockerfile fragment is adapted from a real, working harness image build, including the comment explaining why the token is a secret and not an ARG, and why pnpm gets the value inline in a discarded stage.

What is deliberately absent

Any credential, real or fake. No sample on this site contains a key, a token, a connection string, or a plausible-looking placeholder for one. Credentials appear only as authRef / credRef indirections and environment variable names.

@pragyacyber/mcp-sdk's buildMcpServer as a deployment path. It is documented, with the reason and the transcript, and then explicitly not recommended. Its defineMcp rules are taught throughout the Python chapters.