Files
Rohit Ghumare ed6d0c0196 feat: add agent skills track and stateless MCP curriculum (#422)
* feat(phase-13/22): teach portable agent skill contracts

Agent skills need a portable contract before host-specific metadata and runtime policy can be reasoned about.

* fix(phase-13/23): make the ecosystem capstone accurate

The capstone should model current A2A operations, portable artifact metadata, and deterministic trace timing.

* feat(phase-13/24): teach skill discovery and disclosure

A useful skill catalog needs explicit scope precedence and bounded progressive disclosure before instructions are loaded.

* feat(phase-13/25): teach invocation policy and routing

Human, model, application, and skill activation need separate policy decisions before relevance ranking can be trusted.

* feat(phase-13/26): teach skill sandbox and trust boundaries

Skill instructions are untrusted input, so authority must remain host-owned and every filesystem, network, and command boundary must fail closed.

* feat(phase-13/27): add the skill release gate

A distributable skill needs adversarial structure, routing, safety, artifact, provenance, installation, and portability evidence before release.

* feat(skills): install and render complete skill bundles

Progressive-disclosure skills must keep companion references, scripts, assets, and evals intact across discovery, installation, and lesson rendering.

* docs(curriculum): index the agent skills mini-course

The expanded Phase 13 sequence needs consistent lesson links, durations, translations, and shared terminology across every learner entry point.

* feat(certification/11): teach stateless MCP integration

Certification learners need the same stateless wire model as the production curriculum.

* feat(phase-11/14): modernize MCP protocol contracts

The foundational MCP lesson must no longer teach the removed session lifecycle.

* fix(phase-13/01): align tool terms with stateless MCP

The tool interface introduction should point to the current protocol vocabulary.

* feat(phase-13/06): teach stateless MCP fundamentals

Learners need the current per-request contract before building clients or servers.

* feat(phase-13/07): build a stateless MCP server

The server lab should model the protocol that new implementations actually ship.

* feat(phase-13/08): build a stateless MCP client

The client lab must negotiate every request without relying on session state.

* feat(phase-13/09): teach current Streamable HTTP

Transport examples need the current POST-only lifecycle and notification behavior.

* feat(phase-13/10): teach stateless resources and prompts

Resource and prompt discovery must reflect stateless cache and result contracts.

* feat(phase-13/11): teach per-request sampling

Sampling calls must carry current capabilities and stateless response semantics.

* feat(phase-13/12): teach roots and elicitation retries

Elicitation retries and roots handling need current capability and MRTR boundaries.

* feat(phase-13/13): teach stateless MCP tasks

Task storage and subscriptions must survive cross-instance stateless requests.

* feat(phase-13/14): update MCP Apps contracts

Apps learners need current bridge, subscription, and discovery boundaries.

* feat(phase-13/15): update MCP threat boundaries

Threat modeling must cover current routing and MRTR state boundaries.

* feat(phase-13/16): update MCP OAuth contracts

OAuth examples must bind issuers and resources while using current errors.

* feat(phase-13/17): update gateway and registry contracts

Registry admission must separate publication identity from runtime discovery.

* feat(phase-13/18): teach production MCP authentication

Production auth should implement real PKCE, CIMD, and resource-bound caching.

* docs(phase-13/22): add a runnable skill quickstart

Beginners need an exact repository-root path from bundle inspection to host use.

* fix(phase-13/23): make the capstone stateless

The ecosystem capstone must compose the same current contracts taught upstream.

* docs(phase-13/24): clarify host discovery limits

Learners should distinguish known context budgets from host fallback behavior.

* docs(phase-13/26): clarify sandbox prerequisites

The safety lab needs explicit prerequisites and a viable conceptual fallback.

* docs(phase-13/27): add real-host release evidence

A production claim should require installed-host evidence beyond deterministic fixtures.

* docs(phase-16/02): update MCP legacy comparison

The interoperability comparison should use the current stateless MCP lifecycle.

* feat(phase-19/13): modernize the MCP registry capstone

The production capstone must separate Registry publication from stateless runtime discovery.

* docs(curriculum): index agent skills and stateless MCP

Learners need one coherent route through the skills track and current MCP sequence.

* feat(skills): add a focused agent skills learner path

A dedicated route removes placement and navigation friction for focused learners.

* feat(mcp): add production engineering track

* fix(cert-11): harden MCP integration contract

* fix(phase-11-14): classify MCP handler failures

* fix(mcp-07): validate JSON-RPC request identifiers

* fix(mcp-08): reuse strict response decoding

* fix(mcp-09): harden HTTP transport boundaries

* fix(mcp-11): isolate returned tool descriptors

* fix(mcp-12): make continuation state single-use

* fix(mcp-14): align lesson response metadata

* fix(mcp-15): expire and consume continuation state

* fix(mcp-16): bind OAuth enrollment and code exchange

* fix(mcp-18): enforce redirect and code lifetimes

* fix(mcp-23): validate task identifiers

* fix(skills-24): clarify discovery boundaries

* fix(skills-25): deny unknown invocation actors

* fix(skills-26): validate approval policy shape

* fix(mcp-28): terminate unsafe cursor pagination

* fix(mcp-29): preserve completed request state

* fix(mcp-30): require secure remote endpoints

* fix(mcp-31): strengthen conformance checks

* fix(agent-skills): align route prerequisites

* fix(scripts): harden skill bundle installation

* fix(site): validate learning and artifact boundaries

* fix(course): address review edge cases

* fix(mcp): tighten notification and redirect validation

* fix(mcp): secure reproducible lesson state

* fix(mcp): use required lesson header comments
2026-08-23 18:01:53 +01:00

79 lines
3.7 KiB
JSON

{
"lesson": "30-mcp-registry-supply-chain-and-drift",
"title": "MCP Registry Supply Chain: Admission, Drift, and Rollback",
"questions": [
{
"stage": "pre",
"question": "What does successful publication in an MCP Registry establish for a production gateway?",
"options": [
"The record passed Registry publication controls, while local runtime admission is still required",
"The live endpoint exactly matches the published package",
"The newest version should immediately replace every older route",
"The server is safe for every principal"
],
"correct": 0,
"explanation": "Registry publication establishes publication facts. Artifact, runtime, authorization, and local approval checks remain separate."
},
{
"stage": "check",
"question": "Which namespace comparison rejects com.exampleevil/tool when the verified namespace is com.example?",
"options": [
"Check whether the whole name starts with com.example",
"Search for the substring example",
"Split at the slash and compare the namespace segment exactly",
"Trust the namespace written inside server.json"
],
"correct": 2,
"explanation": "An exact segment comparison preserves the namespace boundary and uses authority supplied by a trusted verifier."
},
{
"stage": "check",
"question": "A live server adds a new tool while its Registry record and package coordinate stay unchanged. Which evidence detects this?",
"options": [
"A fresh normalized descriptor digest compared with the admitted toolset pin",
"The Registry publication timestamp",
"The namespace authentication method",
"The semantic version string alone"
],
"correct": 0,
"explanation": "Live descriptor pinning detects behavior drift that publication metadata and package coordinates cannot show."
},
{
"stage": "check",
"question": "What should happen when an admitted Registry version changes from active to deprecated?",
"options": [
"Quarantine it from new routing and retain the historical admission evidence",
"Rewrite the published record back to active",
"Delete all evidence so clients cannot discover it",
"Ignore status because package ownership was already verified"
],
"correct": 0,
"explanation": "Status is operational input. Quarantine stops new use while retained evidence supports audit and rollback analysis."
},
{
"stage": "post",
"question": "Which target is eligible for an automatic rollback?",
"options": [
"Any version whose name sorts before the candidate",
"A previously admitted pin that is active under policy, healthy, and not quarantined",
"The version marked latest, even if it was never reviewed",
"A deleted Registry version with a familiar package name"
],
"correct": 1,
"explanation": "Rollback restores a known admissible route. It does not bypass current status, health, or quarantine checks."
},
{
"stage": "post",
"question": "Why should admission ledger heads be anchored in a separate trust domain?",
"options": [
"It makes artifact digests unnecessary",
"It lets publishers set Registry-managed status",
"It converts mutable version ranges into exact pins",
"A local hash chain detects edits, while a separate anchor makes a complete local rewrite detectable"
],
"correct": 3,
"explanation": "An attacker who can rewrite the whole local ledger can recompute its chain. An external signed or write-once anchor exposes that rewrite."
}
]
}