{
  "uid": "cogitave.learn.build-your-first-agent-with-namzu.knowledge-check",
  "kind": "moduleUnit",
  "href": "/modules/build-your-first-agent-with-namzu/knowledge-check/",
  "title": "Knowledge check",
  "summary": "",
  "type": null,
  "products": [],
  "roles": [],
  "levels": [],
  "subjects": [],
  "headings": [],
  "source": "Check what you learned about building an agent with the Namzu kernel. Everything you built runs locally on Node.\n",
  "partOf": "cogitave.learn.build-your-first-agent-with-namzu",
  "durationInMinutes": 3,
  "quiz": {
    "title": "Check your knowledge",
    "questions": [
      {
        "content": "What is the difference between Namzu and an agent application framework?",
        "choices": [
          {
            "content": "Namzu is a kernel: it owns lifecycle, isolation, scheduling, and the event stream, and ships no interface, no hosted service, and no favoured vendor.",
            "isCorrect": true,
            "explanation": "Correct. The things it refuses to own are the point - your frontend, your storage, and your model choice stay your decisions."
          },
          {
            "content": "Namzu bundles a chat interface and a dashboard so you can demo faster.",
            "isCorrect": false,
            "explanation": "Incorrect. That is precisely what a kernel does not do. Namzu renders no interface at all."
          },
          {
            "content": "Namzu is a hosted service you sign into and connect your agents to.",
            "isCorrect": false,
            "explanation": "Incorrect. There is no hosted service and no control plane; the kernel is a package you install."
          }
        ]
      },
      {
        "content": "You need to move from a local model to a hosted one. What changes?",
        "choices": [
          {
            "content": "The provider registration - the import and the type. The code below it is unchanged.",
            "isCorrect": true,
            "explanation": "Correct. Vendors are drivers in separate packages, and every driver returns the same response shape, so nothing downstream has to know which one answered."
          },
          {
            "content": "Every call site, because each vendor returns a different response shape.",
            "isCorrect": false,
            "explanation": "Incorrect. The uniform shape - id, model, message, finishReason, usage - is exactly what the kernel guarantees."
          },
          {
            "content": "Nothing, because the kernel picks a vendor for you automatically.",
            "isCorrect": false,
            "explanation": "Incorrect. You choose the vendor explicitly by registering its driver. Installed alone, the kernel answers from MockLLMProvider."
          }
        ]
      },
      {
        "content": "In `defineTool`, what does `permissions: []` assert?",
        "choices": [
          {
            "content": "That the tool may compute and reach nothing else - authority is an allow-list, and an empty list grants nothing.",
            "isCorrect": true,
            "explanation": "Correct. Permissions are declared, not inferred. An empty set is the narrowest possible grant, not a missing value."
          },
          {
            "content": "That permissions have not been decided yet, so the kernel grants defaults.",
            "isCorrect": false,
            "explanation": "Incorrect. There is no implicit default grant. Nothing is available because it happened to be reachable."
          },
          {
            "content": "That the tool inherits whatever the surrounding process can do.",
            "isCorrect": false,
            "explanation": "Incorrect. Inheriting ambient authority is the failure mode this model exists to prevent."
          }
        ]
      },
      {
        "content": "A tool call keeps failing on malformed input, and widening the tool's permissions would make the error stop. What do you do?",
        "choices": [
          {
            "content": "Leave the permissions alone and fix the cause - authority follows behaviour you can prove safe, not the reverse.",
            "isCorrect": true,
            "explanation": "Correct. A declaration widened to silence an error has removed the only evidence that a passing result meant anything."
          },
          {
            "content": "Widen the permissions until the error stops appearing.",
            "isCorrect": false,
            "explanation": "Incorrect. That inverts the security model: the declaration is supposed to constrain the behaviour, not accommodate it."
          },
          {
            "content": "Remove the input schema so validation cannot fail.",
            "isCorrect": false,
            "explanation": "Incorrect. The schema is why your `execute` only ever sees well-formed arguments; removing it moves the failure into your code."
          }
        ]
      }
    ]
  }
}