← back to Filemaker Mcp

verification/e2e-proof.json

59 lines

{
  "ticket": "TK-10953",
  "intent": "Prove the com.steve.new-invoice-monitor launchd job reaches the FileMaker 401 empty-result branch and exits successfully after restoring locked dependencies.",
  "risk_tier": "R3",
  "environment": "Mac2 local launchd gui/501; FileMaker read-only dry-run; no Slack/email send and no cursor write",
  "build_identity": "cd8f9737bd0d8a650d868f139411161dd9d5d885",
  "timestamp": "2026-08-31T08:34:00Z",
  "baseline": {
    "scheduler_runs": 6450,
    "scheduler_last_exit": 1,
    "observed_error": "ERR_MODULE_NOT_FOUND: amazon-cognito-identity-js",
    "dependency_directory": "absent"
  },
  "actions": [
    {
      "command": "npm ci --ignore-scripts --no-audit --no-fund",
      "result": "PASS: restored 115 packages from package-lock.json"
    },
    {
      "command": "npm ls --depth=0",
      "result": "PASS: @modelcontextprotocol/sdk 1.29.0, amazon-cognito-identity-js 6.3.18, zod 3.25.76"
    },
    {
      "command": "/opt/homebrew/bin/node scripts/new-invoice-monitor.mjs --dry-run",
      "result": "PASS: exit 0; FileMaker 401 reported as zero invoices and nothing to post"
    },
    {
      "command": "launchctl print gui/501/com.steve.new-invoice-monitor",
      "result": "PASS: natural scheduled run advanced to 6454 and last exit code became 0"
    },
    {
      "command": "bash ~/.agents/skills/cron-fire-canary/run.sh",
      "result": "PASS for com.steve.new-invoice-monitor: state=ok, NOT-firing=0 fleet-wide"
    }
  ],
  "assertions": {
    "file_boundary": "PASS: dependencies resolve from the committed lockfile; tracked source and lockfile unchanged",
    "auth_negative_boundary": "PASS: blank FileMaker credentials exit 1 with the explicit missing-credentials error",
    "filemaker_boundary": "PASS: authenticated dry-run reached the live FileMaker Data API and handled fmCode 401 as an empty result",
    "scheduler_boundary": "PASS: launchd executed the configured Node command naturally and recorded exit 0",
    "artifact_boundary": "PASS: /tmp/new-invoice-monitor.log was refreshed at 2026-08-31 01:32:57 PDT with the empty-result success message",
    "state_boundary": "PASS: data/.last-invoice mtime, size, and SHA-256 were identical before and after the dry-run",
    "side_effect_boundary": "PASS: DRY_RUN prevented Slack posting; FM401 returned before the post loop; no email route exists in this flow",
    "retry_boundary": "PASS: the recurring launchd execution succeeded after earlier dependency-resolution failures without duplicate cursor movement"
  },
  "evidence": {
    "launchd_label": "com.steve.new-invoice-monitor",
    "launchd_runs_after": 6454,
    "launchd_last_exit_after": 0,
    "artifact": "/tmp/new-invoice-monitor.log",
    "artifact_mtime": "2026-08-31T01:32:57-07:00",
    "cursor_sha256_before": "096d74ce9cec29425c3eabd13897d930958fe87f93fa1a00146722b8b9423a83",
    "cursor_sha256_after": "096d74ce9cec29425c3eabd13897d930958fe87f93fa1a00146722b8b9423a83",
    "canary_state": "ok"
  },
  "cleanup": "No temporary records or external messages were created. Installed node_modules is gitignored runtime state retained for the scheduler.",
  "verdict": "PASS"
}