{
  "schemaVersion": "1.0.0",
  "records": [
    {
      "id": "building-this-site",
      "kind": "journal",
      "title": "A home for the work, not the noise.",
      "summary": "Why this site keeps public writing separate from private working notes.",
      "tags": [
        "building",
        "web"
      ],
      "publishedAt": "2026-09-07T17:56:36.430Z",
      "updatedAt": "2026-09-07T17:56:36.430Z",
      "author": "Dominic Grieco",
      "relatedIds": [],
      "sources": [],
      "canonicalUrl": "https://dom.sitesagesolutions.com/journal/building-this-site",
      "markdownUrl": "https://dom.sitesagesolutions.com/content/building-this-site.md"
    },
    {
      "id": "reflexion-reading",
      "kind": "research",
      "title": "Feedback is not proof.",
      "summary": "Reading Reflexion and thinking about the gap between a useful memory and a verified result.",
      "tags": [
        "agents",
        "research"
      ],
      "publishedAt": "2026-09-07T17:56:36.430Z",
      "updatedAt": "2026-09-07T17:56:36.430Z",
      "author": "Dominic Grieco",
      "relatedIds": [],
      "sources": [
        {
          "title": "Reflexion full text, version 4",
          "url": "https://arxiv.org/html/2303.11366v4"
        }
      ],
      "canonicalUrl": "https://dom.sitesagesolutions.com/research/reflexion-reading",
      "markdownUrl": "https://dom.sitesagesolutions.com/content/reflexion-reading.md"
    },
    {
      "id": "personal-site",
      "kind": "projects",
      "title": "A personal site built for people and agents.",
      "summary": "An editorial home on React, TypeScript, and Cloudflare Workers.",
      "tags": [
        "web",
        "agents"
      ],
      "publishedAt": "2026-09-07T17:56:36.430Z",
      "updatedAt": "2026-09-07T17:56:36.430Z",
      "author": "Dominic Grieco",
      "relatedIds": [],
      "sources": [
        {
          "title": "Cloudflare TanStack Start integration",
          "url": "https://developers.cloudflare.com/workers/framework-guides/web-apps/tanstack-start/"
        }
      ],
      "projectStatus": "experiment",
      "sourceVisibility": "private",
      "license": "Not granted",
      "canonicalUrl": "https://dom.sitesagesolutions.com/projects/personal-site",
      "markdownUrl": "https://dom.sitesagesolutions.com/content/personal-site.md"
    },
    {
      "id": "journal-memory-per-project",
      "kind": "journal",
      "title": "Memory should know which project it belongs to",
      "summary": "On August 25, I wrote about a distinction that matters in my agent setup: memory and rules solve different problems.",
      "tags": [
        "journal"
      ],
      "publishedAt": "2026-09-07T17:56:36.430Z",
      "updatedAt": "2026-09-07T17:56:36.430Z",
      "author": "Dominic Grieco",
      "relatedIds": [],
      "sources": [
        {
          "title": "Memory should know which project it belongs to source",
          "url": "https://x.com/DomAtSiteSage/status/2092292480288891369"
        }
      ],
      "canonicalUrl": "https://dom.sitesagesolutions.com/journal/memory-per-project",
      "markdownUrl": "https://dom.sitesagesolutions.com/content/journal-memory-per-project.md"
    },
    {
      "id": "project-cursor-forge",
      "kind": "projects",
      "title": "Cursor Forge",
      "summary": "Cursor Forge is a Hermes plugin for coordinating Cursor coding workers. The aim is to keep planning, delegation and follow-up in one place while workers handle focused tasks.",
      "tags": [
        "projects"
      ],
      "publishedAt": "2026-09-07T17:56:36.430Z",
      "updatedAt": "2026-09-07T17:56:36.430Z",
      "author": "Dominic Grieco",
      "relatedIds": [],
      "sources": [
        {
          "title": "Cursor Forge post on X",
          "url": "https://x.com/DomAtSiteSage/status/2094450593301434425"
        }
      ],
      "projectStatus": "experiment",
      "sourceVisibility": "private",
      "canonicalUrl": "https://dom.sitesagesolutions.com/projects/cursor-forge",
      "markdownUrl": "https://dom.sitesagesolutions.com/content/project-cursor-forge.md"
    },
    {
      "id": "project-hermes-human-gate",
      "kind": "projects",
      "title": "Accord",
      "summary": "Accord explores a simple boundary: an agent can prepare a consequential action without being allowed to carry it out yet. The project provides durable human approval gates for Hermes tool calls.",
      "tags": [
        "projects"
      ],
      "publishedAt": "2026-09-07T17:56:36.430Z",
      "updatedAt": "2026-09-07T17:56:36.430Z",
      "author": "Dominic Grieco",
      "relatedIds": [],
      "sources": [
        {
          "title": "Accord source",
          "url": "https://github.com/DomGrieco/hermes-human-gate"
        }
      ],
      "projectStatus": "experiment",
      "sourceVisibility": "public",
      "repositoryUrl": "https://github.com/DomGrieco/hermes-human-gate",
      "canonicalUrl": "https://dom.sitesagesolutions.com/projects/hermes-human-gate",
      "markdownUrl": "https://dom.sitesagesolutions.com/content/project-hermes-human-gate.md"
    },
    {
      "id": "journal-one-place-to-coordinate",
      "kind": "journal",
      "title": "One place to coordinate the work",
      "summary": "On August 31, I wrote that using all these tools is no small task. I have been building plugins so I can work through Hermes and let Hermes coordinate tools such as Cursor sandboxes.",
      "tags": [
        "journal"
      ],
      "publishedAt": "2026-09-07T17:56:36.430Z",
      "updatedAt": "2026-09-07T17:56:36.430Z",
      "author": "Dominic Grieco",
      "relatedIds": [],
      "sources": [
        {
          "title": "One place to coordinate the work source",
          "url": "https://x.com/DomAtSiteSage/status/2094450593301434425"
        }
      ],
      "canonicalUrl": "https://dom.sitesagesolutions.com/journal/one-place-to-coordinate-the-work",
      "markdownUrl": "https://dom.sitesagesolutions.com/content/journal-one-place-to-coordinate.md"
    },
    {
      "id": "research-testing-the-system",
      "kind": "research",
      "title": "The system around the model deserves its own tests",
      "summary": "A model does not work alone. The surrounding system decides which tools it can use, where it keeps state, how it hands work to another agent and what counts as finished.",
      "tags": [
        "research"
      ],
      "publishedAt": "2026-09-07T17:56:36.430Z",
      "updatedAt": "2026-09-07T17:56:36.430Z",
      "author": "Dominic Grieco",
      "relatedIds": [],
      "sources": [
        {
          "title": "Natural-Language Agent Harnesses, v2",
          "url": "https://arxiv.org/html/2603.25723v2"
        }
      ],
      "canonicalUrl": "https://dom.sitesagesolutions.com/research/testing-the-system-around-the-model",
      "markdownUrl": "https://dom.sitesagesolutions.com/content/research-testing-the-system.md"
    },
    {
      "id": "contribution-routine-owner",
      "kind": "projects",
      "title": "Contribution: Keep routines with their owner",
      "summary": "A merged contribution to Hermes Bot Mode that preserves a routine's owner across profile changes. Merged on 16 August 2026.",
      "tags": [
        "projects"
      ],
      "publishedAt": "2026-09-07T17:56:36.430Z",
      "updatedAt": "2026-09-07T17:56:36.430Z",
      "author": "Dominic Grieco",
      "relatedIds": [],
      "sources": [
        {
          "title": "Contribution: Keep routines with their owner source",
          "url": "https://github.com/NousResearch/Hermes-Bot-Mode/pull/83"
        }
      ],
      "projectStatus": "experiment",
      "sourceVisibility": "public",
      "canonicalUrl": "https://dom.sitesagesolutions.com/projects/routine-owner-contribution",
      "markdownUrl": "https://dom.sitesagesolutions.com/content/contribution-routine-owner.md"
    }
  ]
}