{
  "$schema": "./docs/portfolio-public.schema.json",
  "contract": "hraness.portfolio-public/v1",
  "digest": "sha256:396f6431523ec95fc0599a58adf4e7dfdf963cc11706ade406963fdfa557ed86",
  "formatVersion": 1,
  "foundations": [
    {
      "address": "account.hraness.com",
      "description": "shared identity authority",
      "detail": "The account service supplies Suite OAuth, subscription receipts, and short-lived product-scoped identity.",
      "id": "accounts",
      "kind": "service",
      "name": "accounts",
      "source": {
        "visibility": "private"
      },
      "url": "https://account.hraness.com"
    },
    {
      "address": "@hraness/convex",
      "description": "checked Convex boundaries",
      "detail": "Shared parsing and deployment contracts for Convex-backed products.",
      "id": "convex-toolkit",
      "kind": "package",
      "name": "convex",
      "source": {
        "repositoryUrl": "https://github.com/hraness/convex",
        "visibility": "open-source"
      }
    },
    {
      "address": "@hraness/design-kit",
      "description": "shared product compositions",
      "detail": "The public design foundation builds product-neutral compositions on top of @hraness/ui.",
      "id": "design-kit",
      "kind": "package",
      "name": "design-kit",
      "source": {
        "repositoryUrl": "https://github.com/hraness/design-kit",
        "visibility": "open-source"
      }
    },
    {
      "address": "@hraness/oh",
      "description": "local-first ontology kernel",
      "detail": "The public SQLite store, SDK, CLI, and Agent Skill provide durable research graphs behind the oh.computer surface.",
      "id": "oh",
      "kind": "package",
      "name": "oh kernel",
      "source": {
        "repositoryUrl": "https://github.com/hraness/oh",
        "visibility": "open-source"
      }
    },
    {
      "address": "@hraness/posthog",
      "description": "portfolio analytics schema",
      "detail": "The shared analytics package owns route classification, event schemas, and PostHog integration.",
      "id": "posthog-sdk",
      "kind": "package",
      "name": "posthog",
      "source": {
        "repositoryUrl": "https://github.com/hraness/posthog",
        "visibility": "open-source"
      }
    },
    {
      "address": "@hraness/result",
      "description": "typed Result and Option",
      "detail": "A small public Result and Option toolkit used across runtime boundaries.",
      "id": "result",
      "kind": "package",
      "name": "result",
      "source": {
        "repositoryUrl": "https://github.com/hraness/result",
        "visibility": "open-source"
      }
    },
    {
      "address": "@hraness/suite-accounts",
      "description": "Suite identity protocol",
      "detail": "Validated client and protocol boundaries between products and the Accounts authority.",
      "id": "suite-accounts",
      "kind": "package",
      "name": "suite-accounts",
      "source": {
        "repositoryUrl": "https://github.com/hraness/suite-accounts",
        "visibility": "open-source"
      }
    },
    {
      "address": "@hraness/ui",
      "description": "accessible React Aria primitives",
      "detail": "The public product-neutral component and theme layer shared by Hraness products.",
      "id": "ui",
      "kind": "package",
      "name": "ui",
      "source": {
        "repositoryUrl": "https://github.com/hraness/ui",
        "visibility": "open-source"
      }
    },
    {
      "address": "@hraness/vercel-delivery",
      "description": "delivery and preview boundaries",
      "detail": "Shared Vercel environment and delivery helpers used by independently deployed products.",
      "id": "vercel-delivery",
      "kind": "package",
      "name": "vercel-delivery",
      "source": {
        "repositoryUrl": "https://github.com/hraness/vercel-delivery",
        "visibility": "open-source"
      }
    },
    {
      "address": "@hraness/web-discovery",
      "description": "SEO and machine discovery",
      "detail": "Shared metadata, structured data, sitemaps, and agent-facing discovery contracts.",
      "id": "web-discovery",
      "kind": "package",
      "name": "web-discovery",
      "source": {
        "repositoryUrl": "https://github.com/hraness/web-discovery",
        "visibility": "open-source"
      }
    }
  ],
  "projects": [
    {
      "canonicalUrl": "https://hraness.com",
      "description": "personal site",
      "emoji": "🪢",
      "featured": false,
      "id": "hraness",
      "name": "hraness.com",
      "source": {
        "visibility": "private"
      },
      "surface": {
        "actionLabel": "open hraness.com",
        "interfaces": [
          "website"
        ],
        "proof": "personal writing, project, and Reading indexes"
      }
    },
    {
      "canonicalUrl": "https://aicharts.io",
      "description": "pareto frontier charts",
      "emoji": "📈",
      "featured": true,
      "id": "aicharts",
      "marketing": {
        "category": "model benchmark charts",
        "headlines": [
          "performance. cost. speed.",
          "shareable model cards."
        ],
        "status": "proposed",
        "tagline": "see the pareto frontier."
      },
      "name": "AI Charts",
      "source": {
        "repositoryUrl": "https://github.com/hraness/aicharts",
        "visibility": "open-source"
      },
      "surface": {
        "actionLabel": "compare models",
        "interfaces": [
          "web app"
        ],
        "proof": "interactive Pareto frontier and model benchmark charts"
      }
    },
    {
      "canonicalUrl": "https://swft.io",
      "description": "software factories, in practice",
      "emoji": "🏭",
      "featured": true,
      "id": "swft",
      "marketing": {
        "category": "software factory magazine",
        "headlines": [
          "reported stories. source notes.",
          "how teams ship with agents."
        ],
        "status": "proposed",
        "tagline": "software factories, in practice."
      },
      "name": "SWFT",
      "source": {
        "visibility": "private"
      },
      "surface": {
        "actionLabel": "read SWFT",
        "interfaces": [
          "publication"
        ],
        "proof": "reported software-factory stories with source notes"
      }
    },
    {
      "canonicalUrl": "https://lifecharts.io",
      "description": "personal life timeline maker",
      "emoji": "📊",
      "featured": true,
      "id": "lifedaysleft",
      "marketing": {
        "category": "life timeline maker",
        "headlines": [
          "chapters. links. embeds.",
          "your days, on one line."
        ],
        "status": "proposed",
        "tagline": "visualize your life."
      },
      "name": "Lifecharts",
      "source": {
        "repositoryUrl": "https://github.com/hraness/lifecharts",
        "visibility": "open-source"
      },
      "surface": {
        "actionLabel": "make a timeline",
        "interfaces": [
          "web app",
          "CLI"
        ],
        "proof": "editable life chapters with shareable links and website embeds"
      }
    },
    {
      "canonicalUrl": "https://sleepy.land",
      "description": "sleep research and a calming sound machine",
      "emoji": "💤",
      "featured": true,
      "id": "sleepyland",
      "marketing": {
        "category": "sleep research and sound",
        "headlines": [
          "cited sleep research.",
          "sounds that run in your browser."
        ],
        "status": "proposed",
        "tagline": "a calming sound machine."
      },
      "name": "Sleepyland",
      "source": {
        "visibility": "private"
      },
      "surface": {
        "actionLabel": "explore Sleepyland",
        "interfaces": [
          "web app",
          "publication"
        ],
        "proof": "a browser sound machine beside cited sleep research"
      }
    },
    {
      "canonicalUrl": "https://rough.day",
      "description": "news aggregator",
      "emoji": "🌧️",
      "featured": true,
      "id": "roughday",
      "marketing": {
        "category": "daily news archive",
        "headlines": [
          "one dated page per day.",
          "every story links to its source."
        ],
        "status": "proposed",
        "tagline": "rough days happen."
      },
      "name": "Rough Day",
      "source": {
        "visibility": "private"
      },
      "surface": {
        "actionLabel": "read today's archive",
        "interfaces": [
          "archive"
        ],
        "proof": "a dated, source-linked daily news archive"
      }
    },
    {
      "canonicalUrl": "https://hraness.com/stripe",
      "description": "history of a generational co",
      "emoji": "🦓",
      "featured": true,
      "id": "stripe-history",
      "marketing": {
        "category": "company history",
        "headlines": [
          "timeline. valuation. volume.",
          "every claim links to its receipt."
        ],
        "status": "proposed",
        "tagline": "stripe, sourced and dated."
      },
      "name": "Stripe History",
      "source": {
        "repositoryUrl": "https://github.com/hraness/stripe-history",
        "visibility": "open-source"
      },
      "surface": {
        "actionLabel": "explore the timeline",
        "interfaces": [
          "archive"
        ],
        "proof": "a source-linked company timeline and charts"
      }
    },
    {
      "canonicalUrl": "https://hraness.com/eds",
      "description": "eds evidence, stratified and sourced",
      "emoji": "🧬",
      "featured": false,
      "id": "eds-research",
      "name": "EDS Research",
      "source": {
        "repositoryUrl": "https://github.com/hraness/eds-research",
        "visibility": "open-source"
      },
      "surface": {
        "actionLabel": "explore the index",
        "interfaces": [
          "archive"
        ],
        "proof": "a stratum-graded, source-linked EDS research index"
      }
    },
    {
      "canonicalUrl": "https://act60.me",
      "description": "move to puerto rico",
      "emoji": "⏱️",
      "featured": false,
      "id": "act60",
      "name": "ACT60",
      "source": {
        "visibility": "private"
      },
      "surface": {
        "actionLabel": "estimate Act 60 savings",
        "interfaces": [
          "web app"
        ],
        "proof": "a law-reviewed calculator with visible assumptions"
      }
    },
    {
      "canonicalUrl": "https://ghostget.com",
      "description": "precise web capabilities for agents",
      "emoji": "👻",
      "featured": true,
      "id": "wrench",
      "marketing": {
        "category": "web capabilities for agents",
        "headlines": [
          "attested captures.",
          "bounded provider operations."
        ],
        "status": "proposed",
        "tagline": "capture. archive. operate."
      },
      "name": "Ghostget",
      "source": {
        "repositoryUrl": "https://github.com/hraness/ghostget",
        "visibility": "open-source"
      },
      "surface": {
        "actionLabel": "open Ghostget",
        "interfaces": [
          "CLI",
          "SDK",
          "Agent Skill"
        ],
        "proof": "attested web captures and bounded provider operations"
      }
    },
    {
      "canonicalUrl": "https://textbutler.app",
      "description": "personal message butler",
      "emoji": "🤖",
      "featured": true,
      "id": "message-like-me",
      "marketing": {
        "category": "drafting in your voice",
        "headlines": [
          "local evidence. unsent drafts.",
          "built on your own messages."
        ],
        "status": "proposed",
        "tagline": "sound like you, to each person."
      },
      "name": "Textbutler",
      "source": {
        "repositoryUrl": "https://github.com/hraness/textbutler",
        "visibility": "open-source"
      },
      "surface": {
        "actionLabel": "open Textbutler",
        "interfaces": [
          "CLI",
          "Agent Skill"
        ],
        "proof": "a study packet, evidence profile, and unsent draft"
      }
    },
    {
      "canonicalUrl": "https://slopcamera.com",
      "description": "visual studio for coding agents",
      "emoji": "📸",
      "featured": true,
      "id": "slopcamera",
      "marketing": {
        "category": "video generator",
        "headlines": [
          "all-in-one creative engine"
        ],
        "status": "authored",
        "tagline": "a video studio for your agent"
      },
      "name": "Slopcamera",
      "source": {
        "repositoryUrl": "https://github.com/hraness/slopcamera",
        "visibility": "open-source"
      },
      "surface": {
        "actionLabel": "open Slopcamera",
        "interfaces": [
          "CLI",
          "SDK",
          "MCP",
          "Agent Skill"
        ],
        "proof": "generated media with inspectable job receipts"
      }
    },
    {
      "canonicalUrl": "https://peopleblade.com",
      "description": "local-first contact book and evidence-backed enrichment for people and agents",
      "emoji": "📇",
      "featured": true,
      "id": "peopleblade",
      "marketing": {
        "category": "contacts on steroids",
        "headlines": [
          "built for agents. optional cloud sync."
        ],
        "status": "authored",
        "tagline": "everyone you know, unified."
      },
      "name": "PeopleBlade",
      "source": {
        "visibility": "private"
      },
      "surface": {
        "actionLabel": "open PeopleBlade",
        "interfaces": [
          "CLI",
          "web app"
        ],
        "proof": "local contacts assembled into evidence-backed context"
      }
    },
    {
      "canonicalUrl": "https://sponge.computer",
      "description": "absorb knowledge",
      "emoji": "🧽",
      "featured": true,
      "id": "sponge",
      "marketing": {
        "category": "research terminal",
        "headlines": [
          "connect. prove. publish."
        ],
        "status": "authored",
        "tagline": "save. absorb. explore."
      },
      "name": "Sponge",
      "source": {
        "visibility": "private"
      },
      "surface": {
        "actionLabel": "ask Sponge",
        "interfaces": [
          "web app"
        ],
        "proof": "questions assembled into connected, cited editions"
      }
    },
    {
      "canonicalUrl": "https://wordcell.io",
      "description": "markdown knowledge base for coding agents",
      "emoji": "📝",
      "featured": true,
      "id": "kb",
      "marketing": {
        "category": "knowledge for agents",
        "headlines": [
          "local. open. shareable."
        ],
        "status": "authored",
        "tagline": "memory. ontology. proof."
      },
      "name": "Wordcell",
      "source": {
        "repositoryUrl": "https://github.com/hraness/wordcell",
        "visibility": "open-source"
      },
      "surface": {
        "actionLabel": "open Wordcell",
        "interfaces": [
          "CLI",
          "SDK",
          "Agent Skill"
        ],
        "proof": "Markdown recovered through backlinks, search, and Git context"
      }
    },
    {
      "canonicalUrl": "https://soulscrape.com",
      "description": "evidence-backed working models of people",
      "emoji": "🦾",
      "featured": true,
      "id": "soulscrape",
      "marketing": {
        "category": "simulate people",
        "headlines": [
          "local. open. shareable."
        ],
        "status": "authored",
        "tagline": "capture anyone."
      },
      "name": "Soulscrape",
      "source": {
        "repositoryUrl": "https://github.com/hraness/soulscrape",
        "visibility": "open-source"
      },
      "surface": {
        "actionLabel": "open Soulscrape",
        "interfaces": [
          "Agent Skill"
        ],
        "proof": "a dated person model with cited evidence and open questions"
      }
    },
    {
      "canonicalUrl": "https://platonik.space",
      "description": "browser experiments for a game of algorithmic organisms",
      "emoji": "🦠",
      "featured": true,
      "id": "platonik",
      "name": "Platonik",
      "source": {
        "repositoryUrl": "https://github.com/hraness/platonik",
        "visibility": "open-source"
      },
      "surface": {
        "actionLabel": "explore Platonik",
        "interfaces": [
          "web app"
        ],
        "proof": "editable courier programs, fuzzy truth landscapes, and world-cost estimates; the Rust game remains in design"
      }
    },
    {
      "canonicalUrl": "https://hraness.com/direct",
      "description": "repeatable app states for browser agents",
      "emoji": "🎯",
      "featured": true,
      "id": "direct",
      "marketing": {
        "category": "frontend harness",
        "headlines": [
          "fixtures. scenarios. traces.",
          "deterministic by construction."
        ],
        "status": "proposed",
        "tagline": "one scenario, one state, every time."
      },
      "name": "Direct",
      "source": {
        "repositoryUrl": "https://github.com/hraness/direct",
        "visibility": "open-source"
      },
      "surface": {
        "actionLabel": "open Direct",
        "interfaces": [
          "library",
          "Agent Skill"
        ],
        "proof": "a fixture, scenario, and deterministic browser trace"
      }
    },
    {
      "canonicalUrl": "https://oompa.app",
      "description": "one workspace for coding agents",
      "emoji": "🟠",
      "featured": true,
      "id": "hra",
      "marketing": {
        "category": "agent factory",
        "headlines": [
          "malleable cloud interface",
          "scale up your factory"
        ],
        "status": "authored",
        "tagline": "pool AI subscriptions"
      },
      "name": "Oompa",
      "source": {
        "repositoryUrl": "https://github.com/hraness/oompa",
        "visibility": "open-source"
      },
      "surface": {
        "actionLabel": "open Oompa",
        "interfaces": [
          "web app",
          "CLI"
        ],
        "proof": "isolated Codex and Claude Code sessions with optional encrypted sync"
      }
    },
    {
      "canonicalUrl": "https://sound.fish",
      "description": "content-addressable music",
      "emoji": "🐟",
      "featured": true,
      "id": "soundfish",
      "marketing": {
        "category": "content-addressable music",
        "headlines": [
          "compose. share. remix.",
          "midi in a link."
        ],
        "status": "proposed",
        "tagline": "the song is the url."
      },
      "name": "Soundfish",
      "source": {
        "visibility": "private"
      },
      "surface": {
        "actionLabel": "open the editor",
        "interfaces": [
          "web app",
          "CLI",
          "Agent Skill"
        ],
        "proof": "a MIDI composition encoded in a content-addressed URL"
      }
    },
    {
      "canonicalUrl": "https://oh.computer",
      "description": "open-source tools for agentic research",
      "emoji": "📚",
      "featured": true,
      "id": "oh-computer",
      "marketing": {
        "category": "research kernel",
        "headlines": [
          "local-first ontology.",
          "open-source tools for agentic research."
        ],
        "status": "proposed",
        "tagline": "question to citation, inspectable."
      },
      "name": "oh.computer",
      "source": {
        "repositoryUrl": "https://github.com/hraness/oh",
        "visibility": "open-source"
      },
      "surface": {
        "actionLabel": "research with Oh",
        "interfaces": [
          "CLI",
          "SDK",
          "Agent Skill"
        ],
        "proof": "an inspectable question-to-citation research trace"
      }
    }
  ],
  "relations": [
    {
      "direction": "forward",
      "id": "runtime:hraness:ui:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "hraness",
      "target": "ui"
    },
    {
      "direction": "forward",
      "id": "runtime:hraness:design-kit:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "hraness",
      "target": "design-kit"
    },
    {
      "direction": "forward",
      "id": "runtime:hraness:posthog-sdk:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "hraness",
      "target": "posthog-sdk"
    },
    {
      "direction": "forward",
      "id": "runtime:hraness:vercel-delivery:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "hraness",
      "target": "vercel-delivery"
    },
    {
      "direction": "forward",
      "id": "runtime:hraness:web-discovery:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "hraness",
      "target": "web-discovery"
    },
    {
      "direction": "forward",
      "id": "runtime:aicharts:ui:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "aicharts",
      "target": "ui"
    },
    {
      "direction": "forward",
      "id": "runtime:aicharts:design-kit:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "aicharts",
      "target": "design-kit"
    },
    {
      "direction": "forward",
      "id": "runtime:aicharts:vercel-delivery:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "aicharts",
      "target": "vercel-delivery"
    },
    {
      "direction": "forward",
      "id": "runtime:aicharts:web-discovery:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "aicharts",
      "target": "web-discovery"
    },
    {
      "direction": "forward",
      "id": "runtime:swft:vercel-delivery:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "swft",
      "target": "vercel-delivery"
    },
    {
      "direction": "forward",
      "id": "runtime:swft:web-discovery:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "swft",
      "target": "web-discovery"
    },
    {
      "direction": "forward",
      "id": "runtime:lifedaysleft:design-kit:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "lifedaysleft",
      "target": "design-kit"
    },
    {
      "direction": "forward",
      "id": "runtime:lifedaysleft:result:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "lifedaysleft",
      "target": "result"
    },
    {
      "direction": "forward",
      "id": "runtime:lifedaysleft:slopcamera:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "lifedaysleft",
      "target": "slopcamera"
    },
    {
      "direction": "forward",
      "id": "runtime:sleepyland:ui:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "sleepyland",
      "target": "ui"
    },
    {
      "direction": "forward",
      "id": "runtime:sleepyland:design-kit:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "sleepyland",
      "target": "design-kit"
    },
    {
      "direction": "forward",
      "id": "runtime:sleepyland:posthog-sdk:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "sleepyland",
      "target": "posthog-sdk"
    },
    {
      "direction": "forward",
      "id": "runtime:sleepyland:vercel-delivery:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "sleepyland",
      "target": "vercel-delivery"
    },
    {
      "direction": "forward",
      "id": "runtime:sleepyland:web-discovery:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "sleepyland",
      "target": "web-discovery"
    },
    {
      "direction": "forward",
      "id": "runtime:roughday:ui:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "roughday",
      "target": "ui"
    },
    {
      "direction": "forward",
      "id": "runtime:roughday:design-kit:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "roughday",
      "target": "design-kit"
    },
    {
      "direction": "forward",
      "id": "runtime:roughday:vercel-delivery:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "roughday",
      "target": "vercel-delivery"
    },
    {
      "direction": "forward",
      "id": "development:roughday:direct:develops-with",
      "kind": "development",
      "label": "develops with",
      "source": "roughday",
      "target": "direct"
    },
    {
      "direction": "forward",
      "id": "runtime:stripe-history:ui:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "stripe-history",
      "target": "ui"
    },
    {
      "direction": "forward",
      "id": "runtime:stripe-history:design-kit:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "stripe-history",
      "target": "design-kit"
    },
    {
      "direction": "forward",
      "id": "runtime:stripe-history:vercel-delivery:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "stripe-history",
      "target": "vercel-delivery"
    },
    {
      "direction": "forward",
      "id": "runtime:stripe-history:web-discovery:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "stripe-history",
      "target": "web-discovery"
    },
    {
      "detail": "Hraness proxies the standalone Stripe History data application under its canonical /stripe route.",
      "direction": "forward",
      "id": "delivery:stripe-history:hraness:published-at-stripe",
      "kind": "delivery",
      "label": "published at /stripe",
      "source": "stripe-history",
      "target": "hraness"
    },
    {
      "direction": "forward",
      "id": "runtime:eds-research:vercel-delivery:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "eds-research",
      "target": "vercel-delivery"
    },
    {
      "direction": "forward",
      "id": "runtime:eds-research:web-discovery:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "eds-research",
      "target": "web-discovery"
    },
    {
      "detail": "Hraness proxies the standalone EDS research index under its canonical /eds route.",
      "direction": "forward",
      "id": "delivery:eds-research:hraness:published-at-eds",
      "kind": "delivery",
      "label": "published at /eds",
      "source": "eds-research",
      "target": "hraness"
    },
    {
      "direction": "forward",
      "id": "runtime:act60:ui:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "act60",
      "target": "ui"
    },
    {
      "direction": "forward",
      "id": "runtime:act60:design-kit:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "act60",
      "target": "design-kit"
    },
    {
      "direction": "forward",
      "id": "runtime:act60:result:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "act60",
      "target": "result"
    },
    {
      "direction": "forward",
      "id": "runtime:act60:convex-toolkit:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "act60",
      "target": "convex-toolkit"
    },
    {
      "direction": "forward",
      "id": "runtime:act60:suite-accounts:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "act60",
      "target": "suite-accounts"
    },
    {
      "direction": "forward",
      "id": "runtime:act60:vercel-delivery:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "act60",
      "target": "vercel-delivery"
    },
    {
      "direction": "forward",
      "id": "runtime:wrench:kb:ships-kb-workflows",
      "kind": "runtime",
      "label": "ships KB workflows",
      "source": "wrench",
      "target": "kb"
    },
    {
      "detail": "Ghostget produces bounded multi-account Beeper bundles that Textbutler verifies and ingests locally.",
      "direction": "forward",
      "id": "contract:wrench:message-like-me:exports-private-bundles",
      "kind": "contract",
      "label": "exports private bundles",
      "source": "wrench",
      "target": "message-like-me"
    },
    {
      "detail": "PeopleBlade invokes reviewed Ghostget provider capabilities and verifies their bounded outputs before local ingestion.",
      "direction": "forward",
      "id": "runtime:peopleblade:wrench:provider-transport",
      "kind": "runtime",
      "label": "provider transport",
      "source": "peopleblade",
      "target": "wrench"
    },
    {
      "detail": "Both tools implement the versioned message-like-me.local-message-bundle interchange without importing each other's private state.",
      "direction": "shared",
      "id": "contract:message-like-me:peopleblade:shared-bundle-format",
      "kind": "contract",
      "label": "shared bundle format",
      "source": "message-like-me",
      "target": "peopleblade"
    },
    {
      "direction": "forward",
      "id": "runtime:slopcamera:design-kit:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "slopcamera",
      "target": "design-kit"
    },
    {
      "direction": "forward",
      "id": "development:slopcamera:direct:develops-with",
      "kind": "development",
      "label": "develops with",
      "source": "slopcamera",
      "target": "direct"
    },
    {
      "direction": "forward",
      "id": "runtime:peopleblade:ui:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "peopleblade",
      "target": "ui"
    },
    {
      "direction": "forward",
      "id": "runtime:peopleblade:design-kit:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "peopleblade",
      "target": "design-kit"
    },
    {
      "direction": "forward",
      "id": "runtime:peopleblade:posthog-sdk:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "peopleblade",
      "target": "posthog-sdk"
    },
    {
      "direction": "forward",
      "id": "runtime:sponge:ui:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "sponge",
      "target": "ui"
    },
    {
      "direction": "forward",
      "id": "runtime:sponge:design-kit:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "sponge",
      "target": "design-kit"
    },
    {
      "direction": "forward",
      "id": "runtime:sponge:convex-toolkit:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "sponge",
      "target": "convex-toolkit"
    },
    {
      "direction": "forward",
      "id": "runtime:sponge:posthog-sdk:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "sponge",
      "target": "posthog-sdk"
    },
    {
      "direction": "forward",
      "id": "runtime:sponge:suite-accounts:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "sponge",
      "target": "suite-accounts"
    },
    {
      "direction": "forward",
      "id": "runtime:sponge:vercel-delivery:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "sponge",
      "target": "vercel-delivery"
    },
    {
      "direction": "forward",
      "id": "runtime:sponge:web-discovery:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "sponge",
      "target": "web-discovery"
    },
    {
      "direction": "forward",
      "id": "runtime:kb:ui:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "kb",
      "target": "ui"
    },
    {
      "direction": "forward",
      "id": "runtime:kb:design-kit:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "kb",
      "target": "design-kit"
    },
    {
      "detail": "Hraness renders the pinned public Direct README and Agent Skill at /direct.",
      "direction": "forward",
      "id": "delivery:direct:hraness:readme-backed-direct",
      "kind": "delivery",
      "label": "README-backed /direct",
      "source": "direct",
      "target": "hraness"
    },
    {
      "direction": "forward",
      "id": "development:hra:direct:develops-with",
      "kind": "development",
      "label": "develops with",
      "source": "hra",
      "target": "direct"
    },
    {
      "direction": "forward",
      "id": "runtime:hra:vercel-delivery:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "hra",
      "target": "vercel-delivery"
    },
    {
      "direction": "forward",
      "id": "runtime:hra:web-discovery:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "hra",
      "target": "web-discovery"
    },
    {
      "direction": "forward",
      "id": "runtime:soundfish:ui:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "soundfish",
      "target": "ui"
    },
    {
      "direction": "forward",
      "id": "runtime:soundfish:result:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "soundfish",
      "target": "result"
    },
    {
      "direction": "forward",
      "id": "development:soundfish:direct:develops-with",
      "kind": "development",
      "label": "develops with",
      "source": "soundfish",
      "target": "direct"
    },
    {
      "direction": "forward",
      "id": "runtime:oh-computer:ui:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "oh-computer",
      "target": "ui"
    },
    {
      "direction": "forward",
      "id": "runtime:oh-computer:design-kit:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "oh-computer",
      "target": "design-kit"
    },
    {
      "detail": "The public Oh site publishes the versioned specification for the @hraness/oh kernel from the same repository.",
      "direction": "forward",
      "id": "delivery:oh-computer:oh:publishes-kernel-specification",
      "kind": "delivery",
      "label": "publishes kernel specification",
      "source": "oh-computer",
      "target": "oh"
    },
    {
      "direction": "forward",
      "id": "runtime:design-kit:ui:builds-on",
      "kind": "runtime",
      "label": "builds on",
      "source": "design-kit",
      "target": "ui"
    },
    {
      "direction": "forward",
      "id": "runtime:suite-accounts:result:uses",
      "kind": "runtime",
      "label": "uses",
      "source": "suite-accounts",
      "target": "result"
    },
    {
      "detail": "The public Suite Accounts package validates the protocol spoken by products and the Accounts authority.",
      "direction": "forward",
      "id": "contract:suite-accounts:accounts:oauth-protocol",
      "kind": "contract",
      "label": "OAuth protocol",
      "source": "suite-accounts",
      "target": "accounts"
    }
  ],
  "url": "https://hraness.com/portfolio.json"
}
