{
  "checker": {
    "claims": [
      {
        "claim": "Search returns a JSON evidence packet with the timer decision",
        "command": "<guest-path> search <guest-path> --prompt 'which timer controller did we choose and why' --method synaptic",
        "evidence": "Option 2, because the schedule in [[Example - Watering Schedule v2]] needs a\\nsecond watering time on hot days.\\n\\n## Evidence\\n\\n- PARTIAL: the schedule note asks for morning watering every day; evening\\n  watering only on days above 28 C, so two programs are needed on hot days\\n  only.\\n- USER_STATED: a battery is acceptable; there is no power outlet near the beds.\\n- NOT_FOUND: no note in this vault gives the battery life. This search found\\n  nothing; it does not mean the battery life is short.\\n\",\"start\":0,\"end\":915,\"line_start\":1,\"line_end\":36,\"source_chars\":915,\"truncated\":false,\"match_",
        "expected": "the decision note passage is returned",
        "input": "which timer controller did we choose and why",
        "kind": "claim",
        "outcome": "Real input produced the expected result: Option 2, because the schedule in",
        "returncode": 0,
        "source": "a JSON evidence packet containing the timer decision",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "Synaptic search follows links between notes",
        "command": "<guest-path> search <guest-path> --prompt 'which timer controller did we choose and why' --method synaptic",
        "evidence": "500-Knowledge/Example - Drip Irrigation Basics.md\",\"source_sha256\":\"cc5fb95e94ff42cea3054edf2e76218454e8a59803a299eabc810497ee766d15\",\"content\":\"# Example - Drip Irrigation Basics\\n\\n> [!note] Example note\\n> Fictional content that shows linking and supersession. Safe to delete.\\n\\nDrip irrigation delivers water slowly at the root through a line with small\\nemitters. For raised beds it wastes less water than a sprinkler and keeps the\\nleaves dry.\\n\\n- One emitter per plant, or a line with emitters every 30 cm.\\n- A pressure reducer and a filter go between the tap and the line.\\n- How often to ",
        "expected": "a note reached through a link is included",
        "input": "which timer controller did we choose and why with --method synaptic",
        "kind": "claim",
        "outcome": "Real input produced the expected result: 500-Knowledge/Example - Drip Irrigation Basics.md",
        "returncode": 0,
        "source": "The `--method synaptic` option follows links between notes.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "Agent can search notes over MCP",
        "command": "<guest-path> mcp --vault <guest-path> tools/call {\"tool\": \"search_vault\", \"arguments\": {\"prompt\": \"which timer controller did we choose and why\"}}",
        "evidence": "Option 2, because the schedule in [[Example - Watering Schedule v2]] needs a\\\\nsecond watering time on hot days.\\\\n\\\\n## Evidence\\\\n\\\\n- PARTIAL: the schedule note asks for morning watering every day; evening\\\\n  watering only on days above 28 C, so two programs are needed on hot days\\\\n  only.\\\\n- USER_STATED: a battery is acceptable; there is no power outlet near the beds.\\\\n- NOT_FOUND: no note in this vault gives the battery life. This search found\\\\n  nothing; it does not mean the battery life is short.\\\\n\\\",\\\"start\\\":0,\\\"end\\\":915,\\\"line_start\\\":1,\\\"line_end\\\":36,\\\"source_chars\\\":915,\\\"t",
        "expected": "the decision passage is returned by the search_vault tool",
        "input": "{\"tool\": \"search_vault\", \"arguments\": {\"prompt\": \"which timer controller did we choose and why\"}}",
        "kind": "claim",
        "outcome": "Real input produced the expected result: Option 2, because the schedule in",
        "source": "The agent can then search notes and read sources on demand.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Entry points inspected: README.md, QUICKSTART.md and docs/cli.md list no scheduler, cron, loop, webhook, --once or --now command. context_layer/ contains no scheduling code; the CLI subcommands (index, search, mcp, hook, etc.) run once per invocation and the MCP server runs only while a host keeps stdin open. The only 'loop' hits are unrelated code comments and the agent-loop usage label. No product cycle to trigger.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Entry points inspected: README.md, QUICKSTART.md and docs/cli.md list no scheduler, cron, loop, webhook, --once or --now command. context_layer/ contains no scheduling code; the CLI subcommands (index, search, mcp, hook, etc.) run once per invocation and the MCP server runs only while a host keeps stdin open. The only 'loop' hits are unrelated code comments and the agent-loop usage label. No product cycle to trigger.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "<guest-path>",
        "mcp",
        "--vault",
        "<guest-path>"
      ],
      "kind": "mcp",
      "scope": "product operation",
      "serverInfo": {
        "name": "context-layer",
        "version": "0.5.0"
      },
      "tool_result": {
        "content": [
          {
            "text": "{\"schema\":\"evidence-delivery-v1\",\"operation_status\":\"ok\",\"status\":\"PARTIAL\",\"evidence\":[{\"source_path\":\"300-Projects/Example - Garden Irrigation.md\",\"source_sha256\":\"a30a9582959968345ec6ee92ca2c814af125ff2aa592b7440a22618a2b7d9f50\",\"content\":\"---\\naliases: [Irrigation project]\\nrelated:\\n  - \\\"[[Example - Drip Irrigation Basics]]\\\"\\n  - \\\"[[Example - Watering Schedule v2]]\\\"\\n  - \\\"[[Example - Decision - Timer Controller]]\\\"\\nstatus: active\\ntags: [project, example]\\n---\\n# Example - Garden Irrigation\\n\\n> [!note] Example note\\n> Fictional content that shows linking and supersession. Safe to delete.\\n\\n## Goal\\n\\nWater the four vegetable beds automatically, so a week away does not kill the\\ntomatoes.\\n\\n## Status and next step\\n\\n- Status: timer chosen, pipes not yet laid.\\n- Next step: buy 30 m of drip line (see [[Example - Drip Irrigation Basics]]).\\n\\n## Links\\n\\n- Decision: [[Example - Decision - Timer Controller]]\\n- Meeting: [[Example - Meeting - Garden Club 2026-01-14]]\\n- Current schedule: [[Example - Watering Schedule v2]]\\n- Advice from: [[Example - Person - Sam]]\\n\",\"start\":0,\"end\":813,\"line_start\":1,\"line_end\":30,\"source_chars\":813,\"truncated\":false,\"match_in_content\":true},{\"source_path\":\"daily/Example - 2026-01-15.md\",\"source_sha256\":\"56a6b668ce572a7014d00121c6c217c3229664f2a65f0fe35a14f342e15acbf5\",\"content\":\"---\\naliases: []\\nrelated:\\n  - \\\"[[Example - Garden Irrigation]]\\\"\\nstatus: done\\ntags: [daily, example]\\n---\\n# Example - 2026-01-15\\n\\n> [!note] Example note\\n> Fictional content that shows linking and supersession. Safe to delete.\\n\\n## Done\\n\\n- Chose the timer: [[Example - Decision - Timer Controller]].\\n- Replaced the old schedule with [[Example - Watering Schedule v2]].\\n\\n## Open\\n\\n- Buy drip line (tracked in [[Example - Garden Irrigation]]).\\n\",\"start\":0,\"end\":436,\"line_start\":1,\"line_end\":20,\"source_chars\":436,\"truncated\":false,\"match_in_content\":true},{\"source_path\":\"300-Projects/Example - Decision - Timer Controller.md\",\"source_sha256\":\"5961c595365b3195f568f4e8f35825a12f393a6f121c2d3895c384cfbd3106b3\",\"content\":\"---\\naliases: []\\nrelated:\\n  - \\\"[[Example - Garden Irrigation]]\\\"\\nstatus: decided\\ntags: [decision, example]\\n---\\n# Example - Decision - Timer Controller\\n\\n> [!note] Example note\\n> Fictional content that shows linking and supersession. Safe to delete.\\n\\nDate: 2026-01-15\\n\\n## Question\\n\\nWhich timer should control the drip line?\\n\\n## Options\\n\\n1. A mechanical dial timer.\\n2. A battery timer with two programs.\\n\\n## Decision and why\\n\\nOption 2, because the schedule in [[Example - Watering Schedule v2]] needs a\\nsecond watering time on hot days.\\n\\n## Evidence\\n\\n- PARTIAL: the schedule note asks for morning watering every day; evening\\n  watering only on days above 28 C, so two programs are needed on hot days\\n  only.\\n- USER_STATED: a battery is acceptable; there is no power outlet near the beds.\\n- NOT_FOUND: no note in this vault gives the battery life. This search found\\n  nothing; it does not mean the battery life is short.\\n\",\"start\":0,\"end\":915,\"line_start\":1,\"line_end\":36,\"source_chars\":915,\"truncated\":false,\"match_in_content\":true}],\"coverage\":{\"indexed_notes\":27,\"index_sha256\":\"00903e53dc7519679a6bca49ff22a90493b91563009af584c4baf5d425c068f8\",\"query_terms\":[\"timer\",\"controller\",\"did\",\"choose\"],\"match_expression\":\"\\\"timer\\\" OR \\\"controller\\\" OR \\\"did\\\" OR \\\"choose\\\"\",\"skipped_by_reason\":{\"oversize\":0,\"unreadable\":0,\"unsupported_name\":0,\"not_utf8\":0}}}",
            "type": "text"
          }
        ],
        "isError": false
      },
      "tool_result_checked": true,
      "tool_schema_bytes": 7574,
      "tools": [
        "search_vault",
        "read_source",
        "vault_status",
        "memory_record",
        "memory_resume",
        "graph_neighbors",
        "read_packet",
        "check_claims",
        "github_context"
      ],
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Index the demo vault as the quick start describes",
        "command": "<guest-path> index <guest-path>",
        "deferred": false,
        "evidence": "indexed 27 files, 27 records -> .context/index.sqlite\nincremental: 0 changed, 0 added, 0 removed, 27 unchanged (0 records rewritten); index unchanged\ngraph: 27 notes, 66 edges, 0 unresolved links (0 ambiguous) -> .context/graph.sqlite in 0.020s (unchanged)",
        "expected": "27 files indexed",
        "input": "~/ContextLayerDemo (<guest-path>)",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Quick start",
        "verdict": "yes"
      },
      {
        "claim": "Plain full-text search of the demo vault returns evidence",
        "command": "<guest-path> search <guest-path> --prompt 'which timer controller did we choose and why'",
        "deferred": false,
        "evidence": "ower outlet near the beds.\\n- NOT_FOUND: no note in this vault gives the battery life. This search found\\n  nothing; it does not mean the battery life is short.\\n\",\"start\":0,\"end\":915,\"line_start\":1,\"line_end\":36,\"source_chars\":915,\"truncated\":false,\"match_in_content\":true}],\"coverage\":{\"indexed_notes\":27,\"index_sha256\":\"00903e53dc7519679a6bca49ff22a90493b91563009af584c4baf5d425c068f8\",\"query_terms\":[\"timer\",\"controller\",\"did\",\"choose\"],\"match_expression\":\"\\\"timer\\\" OR \\\"controller\\\" OR \\\"did\\\" OR \\\"choose\\\"\",\"skipped_by_reason\":{\"oversize\":0,\"unreadable\":0,\"unsupported_name\":0,\"not_utf8\":0}}}",
        "expected": "status PARTIAL with evidence",
        "input": "which timer controller did we choose and why",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Quick start",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "python3 -m venv failed: ensurepip not available (python3.12-venv missing). Substitute: sudo -n apt-get install -y python3.12-venv, then recreated the venv in the same location. Succeeded.",
    "make was not installed; installed with sudo -n apt-get install -y make. Succeeded.",
    "First foreground 'make test' was killed by my own 900 s tool timeout (rc=124) during tests/test_orchestrate.py; no test failure was reported. Reran make test in the background with stdin closed; it completed with exit 0 in 1073 s.",
    "Demo folder placed at <guest-path> because HOME is <guest-path>, not the README's ~ equivalent of a user home directory.",
    "The quick start's Windows and Obsidian steps were not run (not applicable to this Linux guest; Obsidian plugin not installed)."
  ],
  "fault_owner": null,
  "main_blocker": null,
  "operation": "Build a local index of a Markdown vault and retrieve source-linked evidence for a question, both by the context-layer CLI search command and through the context-layer MCP stdio server (search_vault tool)",
  "operation_scope": "Pinned commit 22ac801fa808a6df303d74cf5543f6d9276c671b on Ubuntu 24.04 with Python 3.12.3; uses the README's demo vault (fictional notes, no API key, no network for local search). Browser, GitHub sources and model APIs were not used. Scheduling/cycles: none in the product.",
  "outcome": "working",
  "plain_failure": null,
  "steps": [
    "git init; git remote add origin https://github.com/solisolsoli/context-layer; git fetch --depth 1 origin 22ac801fa808a6df303d74cf5543f6d9276c671b; git reset --mixed FETCH_HEAD",
    "python3 -m venv .venv  (failed first: ensurepip unavailable; fixed by sudo apt-get install python3.12-venv, then recreated .venv)",
    "python -m pip install -e .  (in the venv; installed context-layer 0.5.0)",
    "context-layer brain init ~/ContextLayerDemo --apply  (HOME=<guest-path>, so folder is <guest-path>)",
    "context-layer index ~/ContextLayerDemo  (indexed 27 files, 27 notes, 66 edges)",
    "context-layer search ~/ContextLayerDemo --prompt \"which timer controller did we choose and why\" --method synaptic  (returned PARTIAL evidence packet with the timer decision and linked notes)",
    "context-layer mcp --vault ~/ContextLayerDemo, MCP tools/call search_vault with prompt \"which timer controller did we choose and why\" (returned the decision passage)",
    "make test (documented in README 'Support and development'): exit 0 after 1073 s, all suites OK, 2 platform tests skipped"
  ],
  "stuck_step": null,
  "suggested_fix": "None required for the tested path. Optional: the README's first install step assumes python3-venv is present; on Ubuntu 24.04 minimal guests a 'python3.12-venv' install is needed first."
}
