breadcast/graphify-out/.graphify_chunk_01.json
Breadway 1dd63e1fd5
Some checks failed
dev release / build (push) Failing after 1m43s
can't be bothered writing a commit message
2026-08-03 09:17:59 +08:00

941 lines
34 KiB
JSON

{
"nodes": [
{
"id": "dev-release-workflow",
"label": "Dev Release Workflow",
"type": "process",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/.forgejo/workflows/dev-release.yml",
"source_location": "line 1-79",
"definition": "Forgejo CI workflow that auto-publishes dev-track builds on every push to the dev branch"
},
{
"id": "beta-release-workflow",
"label": "Beta Release Workflow",
"type": "process",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/.forgejo/workflows/beta-release.yml",
"source_location": "line 1-79",
"definition": "Forgejo CI workflow that auto-publishes beta-track builds on every push to the beta branch (frozen stabilization)"
},
{
"id": "stable-release-workflow",
"label": "Stable Release Workflow",
"type": "process",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/.forgejo/workflows/release.yml",
"source_location": "line 1-58",
"definition": "Forgejo CI workflow triggered by v* tag push; cuts stable releases and uploads to GitHub"
},
{
"id": "main-branch",
"label": "Main Branch",
"type": "config",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/CONTRIBUTING.md",
"source_location": "line 11-12",
"definition": "Release branch, always tag-ready. Only moves forward via beta merge"
},
{
"id": "dev-branch",
"label": "Dev Branch",
"type": "config",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/CONTRIBUTING.md",
"source_location": "line 13-16",
"definition": "Integration branch where all day-to-day work lands first. Auto-publishes dev builds on push"
},
{
"id": "beta-branch",
"label": "Beta Branch",
"type": "config",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/CONTRIBUTING.md",
"source_location": "line 17-20",
"definition": "Frozen stabilization branch cut from dev periodically. Auto-publishes beta builds; only fix branches merged after freeze"
},
{
"id": "dev-track",
"label": "Dev Track",
"type": "config",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/CONTRIBUTING.md",
"source_location": "line 52-64",
"definition": "Bleeding edge release track; distributed from dev branch via dl.breadway.dev/dev"
},
{
"id": "beta-track",
"label": "Beta Track",
"type": "config",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/CONTRIBUTING.md",
"source_location": "line 52-64",
"definition": "Current stabilization freeze track; distributed from beta branch via dl.breadway.dev/beta"
},
{
"id": "stable-track",
"label": "Stable Track",
"type": "config",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/CONTRIBUTING.md",
"source_location": "line 52-64",
"definition": "Last tagged release track; distributed from main branch via dl.breadway.dev"
},
{
"id": "release-cycle",
"label": "Release Cycle",
"type": "process",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/CONTRIBUTING.md",
"source_location": "line 34-50",
"definition": "Three-phase release workflow: 1 week dev stability, then beta cut + 1 month stabilization, then merge to main + tag for stable release"
},
{
"id": "bakery-package-manager",
"label": "Bakery Package Manager",
"type": "tool",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/CONTRIBUTING.md",
"source_location": "line 54-58",
"definition": "Bread ecosystem package manager; users manage install tracks via 'bakery track set' / 'bakery update --all'"
},
{
"id": "dl-breadway-dev",
"label": "dl.breadway.dev",
"type": "tool",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/.forgejo/workflows/dev-release.yml",
"source_location": "line 50,60",
"definition": "Breadway package distribution server hosting dev/beta/stable builds and signed index.json"
},
{
"id": "breadcastd-daemon",
"label": "breadcastd Daemon",
"type": "component",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/README.md",
"source_location": "line 6-8",
"definition": "Background daemon that discovers Cast devices on LAN, owns screen-capture/encode/serve pipeline and live Cast V2 session"
},
{
"id": "breadcast-ui",
"label": "breadcast UI",
"type": "component",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/README.md",
"source_location": "line 9-10",
"definition": "GTK4 Layer Shell popup for picking a device and starting/stopping a cast"
},
{
"id": "breadcast-core",
"label": "breadcast-core Library",
"type": "library",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/README.md",
"source_location": "line 46",
"definition": "Core Rust library providing device discovery example"
},
{
"id": "cast-protocol",
"label": "Cast Protocol",
"type": "protocol",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/EVENTS.md",
"source_location": "line 19",
"definition": "Cast/Chromecast discovery protocol via mDNS; device_id is protocol-specific"
},
{
"id": "dlna-protocol",
"label": "DLNA Protocol",
"type": "protocol",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/EVENTS.md",
"source_location": "line 19",
"definition": "DLNA/UPnP media renderer discovery via SSDP; device_id is protocol-specific (description URL)"
},
{
"id": "castv2-protocol",
"label": "CASTV2 Protocol",
"type": "protocol",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/vendor/rust_cast-0.21.0/README.md",
"source_location": "line 10,29",
"definition": "Cast V2 control protocol implementation; uses TLS control channel and arbitrary namespace messaging"
},
{
"id": "cast-streaming",
"label": "Cast Streaming",
"type": "protocol",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/breadcast-caststream-sys/vendor/openscreen/PATCHES.md",
"source_location": "line 5-11",
"definition": "Cast Streaming sender protocol: RTP/RTCP send + OFFER/ANSWER negotiation + AES frame encryption"
},
{
"id": "device-discovered-event",
"label": "Device Discovered Event",
"type": "event",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/EVENTS.md",
"source_location": "line 17-19",
"definition": "bread.cast.device_found event fired when Chromecast/Google TV or DLNA renderer discovered/re-resolved on LAN; fires on every re-resolution"
},
{
"id": "mirroring-started-event",
"label": "Mirroring Started Event",
"type": "event",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/EVENTS.md",
"source_location": "line 20",
"definition": "bread.cast.mirroring_started event fired when mirroring session successfully starts via command, IPC, or popup"
},
{
"id": "mirroring-stopped-event",
"label": "Mirroring Stopped Event",
"type": "event",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/EVENTS.md",
"source_location": "line 21",
"definition": "bread.cast.mirroring_stopped event fired when session ends (explicit stop or unprompted receiver disconnect)"
},
{
"id": "mirroring-failed-event",
"label": "Mirroring Failed Event",
"type": "event",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/EVENTS.md",
"source_location": "line 22",
"definition": "bread.cast.mirroring_failed event fired when start attempt fails before session established"
},
{
"id": "cast-start-command",
"label": "Cast Start Command",
"type": "event",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/EVENTS.md",
"source_location": "line 28",
"definition": "bread.command.cast.start command; fire-and-forget starts mirroring to given device (outcome via mirroring_started/failed events)"
},
{
"id": "cast-stop-command",
"label": "Cast Stop Command",
"type": "event",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/EVENTS.md",
"source_location": "line 29",
"definition": "bread.command.cast.stop command; stops active mirroring session if any"
},
{
"id": "breadd-integration",
"label": "Breadd Integration",
"type": "component",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/EVENTS.md",
"source_location": "line 1-8",
"definition": "breadcastd publishes into shared bread automation fabric (bread.cast.*/bread.command.cast.*) when breadd present; fails gracefully without it"
},
{
"id": "bread-automation-fabric",
"label": "Bread Automation Fabric",
"type": "system",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/EVENTS.md",
"source_location": "line 4",
"definition": "Shared bread ecosystem event/command bus; optional for breadcast, provides device discovery events and command reception"
},
{
"id": "bread-client-transport",
"label": "bread_client Transport",
"type": "library",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/EVENTS.md",
"source_location": "line 10-13",
"definition": "bread-utils module (feature flag bread-client) handling IPC to bread automation fabric; linked directly by breadcastd"
},
{
"id": "screen-mirroring-pipeline",
"label": "Screen Mirroring Pipeline",
"type": "process",
"confidence": 0.85,
"source_file": "/home/breadway/Projects/breadcast/README.md",
"source_location": "line 8,15-18",
"definition": "Portal-based screen capture → GPU-accelerated encode → HLS → local HTTP server pipeline (not fully built in current version)"
},
{
"id": "gstreamer",
"label": "GStreamer",
"type": "tool",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/README.md",
"source_location": "line 27-28",
"definition": "Media framework for encoding pipeline; requires gst-plugin-pipewire, gst-plugins-bad (VA-API), gst-plugin-hlssink3"
},
{
"id": "hyprland",
"label": "Hyprland",
"type": "tool",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/README.md",
"source_location": "line 29-30",
"definition": "Wayland compositor target; requires Layer Shell + xdg-desktop-portal ScreenCast interface"
},
{
"id": "wayland",
"label": "Wayland",
"type": "tool",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/README.md",
"source_location": "line 29-30",
"definition": "Display server protocol required for breadcast"
},
{
"id": "xdg-desktop-portal",
"label": "XDG Desktop Portal",
"type": "tool",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/README.md",
"source_location": "line 30",
"definition": "XDG Desktop Portal with ScreenCast interface for secure screen capture"
},
{
"id": "gtk4",
"label": "GTK4",
"type": "tool",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/README.md",
"source_location": "line 26",
"definition": "GTK 4.12+ UI toolkit for breadcast popup"
},
{
"id": "gtk4-layer-shell",
"label": "gtk4-layer-shell",
"type": "library",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/README.md",
"source_location": "line 26",
"definition": "Layer Shell protocol binding for GTK4; required for breadcast popup"
},
{
"id": "systemd-user-service",
"label": "Systemd User Service",
"type": "config",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/README.md",
"source_location": "line 59-67",
"definition": "breadcastd.service unit file in contrib/ for persistent daemon management"
},
{
"id": "hyprland-keybind",
"label": "Hyprland Keybind",
"type": "config",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/README.md",
"source_location": "line 69-84",
"definition": "Super+C keybind launches breadcast popup; stock conf vs BOS Lua+JSON config differences"
},
{
"id": "bread-theme",
"label": "Bread Theme",
"type": "tool",
"confidence": 0.85,
"source_file": "/home/breadway/Projects/breadcast/README.md",
"source_location": "line 94-98",
"definition": "Shared bread ecosystem color palette; breadcast UI will inherit theme once built"
},
{
"id": "openscreen-vendor",
"label": "OpenScreen Vendor",
"type": "library",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/breadcast-caststream-sys/vendor/openscreen/PATCHES.md",
"source_location": "line 1-14",
"definition": "Chromium OpenScreen pruned subset (BSD-3-Clause); Cast Streaming sender data path (RTP/RTCP, OFFER/ANSWER, AES encryption)"
},
{
"id": "breadcast-caststream-sys",
"label": "breadcast-caststream-sys",
"type": "library",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/breadcast-caststream-sys/vendor/openscreen/PATCHES.md",
"source_location": "line 13-14",
"definition": "Rust FFI wrapper for Cast Streaming sender path; uses cc crate to compile vendored OpenScreen C++"
},
{
"id": "rust-cast-vendor",
"label": "rust_cast Vendor",
"type": "library",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/vendor/rust_cast-0.21.0/PATCHES.md",
"source_location": "line 1-6",
"definition": "azasypkin/rust-cast 0.21.0 (MIT licensed) vendored via [patch.crates-io]; patched with generic point-to-point CASTV2 namespace send"
},
{
"id": "cast-device-send-message",
"label": "CastDevice::send_message",
"type": "concept",
"confidence": 0.95,
"source_file": "/home/breadway/Projects/breadcast/vendor/rust_cast-0.21.0/PATCHES.md",
"source_location": "line 25-29",
"definition": "Custom method patch added to rust_cast; generic point-to-point send on arbitrary CASTV2 namespace with caller-supplied destination"
},
{
"id": "webrtc-namespace",
"label": "WebRTC Namespace",
"type": "concept",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/vendor/rust_cast-0.21.0/PATCHES.md",
"source_location": "line 13,19",
"definition": "urn:x-cast:com.google.cast.webrtc namespace for OFFER/ANSWER exchange with Cast receiver app"
},
{
"id": "mdns-discovery",
"label": "mDNS Discovery",
"type": "protocol",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/README.md",
"source_location": "line 14",
"definition": "Multicast DNS discovery for Chromecast/Google TV devices on LAN"
},
{
"id": "ssdp-discovery",
"label": "SSDP Discovery",
"type": "protocol",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/EVENTS.md",
"source_location": "line 19",
"definition": "Simple Service Discovery Protocol for finding DLNA/UPnP media renderers on LAN"
},
{
"id": "daemon-actor-pattern",
"label": "Daemon Actor Pattern",
"type": "pattern",
"confidence": 0.85,
"source_file": "/home/breadway/Projects/breadcast/EVENTS.md",
"source_location": "line 33-34",
"definition": "breadcastd uses actor pattern with single 'active session' notion across all control surfaces (command, IPC, popup)"
},
{
"id": "minisign",
"label": "Minisign",
"type": "tool",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/.forgejo/workflows/beta-release.yml",
"source_location": "line 66,70",
"definition": "Cryptographic signature tool for signing bakery index.json; secret stored as CI variable"
},
{
"id": "semantic-versioning",
"label": "Semantic Versioning",
"type": "concept",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/.forgejo/workflows/dev-release.yml",
"source_location": "line 34-45",
"definition": "Version scheme: X.Y.Z for stable, X.Y.Z-dev.<timestamp>+<sha> for dev, X.Y.Z-beta.<timestamp>+<sha> for beta; auto-computed from latest tag"
},
{
"id": "version-sorting",
"label": "Version Sorting",
"type": "concept",
"confidence": 0.85,
"source_file": "/home/breadway/Projects/breadcast/.forgejo/workflows/dev-release.yml",
"source_location": "line 29-45",
"definition": "Dev/beta versions always sort newer than stable via timestamp suffix, ensuring bakery accepts them over existing installs"
},
{
"id": "self-hosted-runner",
"label": "Self-Hosted Runner",
"type": "tool",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/.forgejo/workflows/dev-release.yml",
"source_location": "line 13",
"definition": "Forgejo CI uses self-hosted hestia runner for all builds (not cloud CI)"
},
{
"id": "github-release",
"label": "GitHub Release",
"type": "tool",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/.forgejo/workflows/release.yml",
"source_location": "line 44-58",
"definition": "GitHub mirror destination for stable releases; breadcast binaries uploaded via gh CLI with GH_RELEASE_TOKEN"
},
{
"id": "bread-ecosystem",
"label": "Bread Ecosystem",
"type": "system",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/CONTRIBUTING.md",
"source_location": "line 6-7",
"definition": "Multi-project ecosystem with shared release channel policy and automation; breadcast follows same workflow as other products"
},
{
"id": "feature-branch",
"label": "Feature Branch",
"type": "config",
"confidence": 0.90,
"source_file": "/home/breadway/Projects/breadcast/CONTRIBUTING.md",
"source_location": "line 22-27",
"definition": "Short-lived branch (feature/<name> or fix/<issue>) branched from dev; merged back to dev via PR when ready"
}
],
"edges": [
{
"source_id": "dev-release-workflow",
"target_id": "dev-branch",
"relationship": "triggers",
"confidence": 0.95,
"justification": "Workflow explicitly triggers 'on: push: branches: [dev]'"
},
{
"source_id": "dev-release-workflow",
"target_id": "dev-track",
"relationship": "produces",
"confidence": 0.95,
"justification": "Workflow publishes dev-track builds to dl.breadway.dev/dev"
},
{
"source_id": "beta-release-workflow",
"target_id": "beta-branch",
"relationship": "triggers",
"confidence": 0.95,
"justification": "Workflow explicitly triggers 'on: push: branches: [beta]'"
},
{
"source_id": "beta-release-workflow",
"target_id": "beta-track",
"relationship": "produces",
"confidence": 0.95,
"justification": "Workflow publishes beta-track builds to dl.breadway.dev/beta"
},
{
"source_id": "stable-release-workflow",
"target_id": "main-branch",
"relationship": "references",
"confidence": 0.90,
"justification": "Workflow triggered by v* tag pushes; releases are merged to main branch"
},
{
"source_id": "stable-release-workflow",
"target_id": "stable-track",
"relationship": "produces",
"confidence": 0.95,
"justification": "Workflow publishes stable-track builds to dl.breadway.dev"
},
{
"source_id": "stable-release-workflow",
"target_id": "github-release",
"relationship": "connects",
"confidence": 0.95,
"justification": "Workflow uploads binaries to GitHub Release via gh CLI after stable build"
},
{
"source_id": "release-cycle",
"target_id": "dev-branch",
"relationship": "uses",
"confidence": 0.95,
"justification": "Cycle step 1: work accumulates on dev via feature/fix branches"
},
{
"source_id": "release-cycle",
"target_id": "beta-branch",
"relationship": "uses",
"confidence": 0.95,
"justification": "Cycle step 2: beta is cut from dev after ~1 week stability"
},
{
"source_id": "release-cycle",
"target_id": "main-branch",
"relationship": "uses",
"confidence": 0.95,
"justification": "Cycle step 4: beta merged to main after ~1 month stability and tagged"
},
{
"source_id": "beta-branch",
"target_id": "main-branch",
"relationship": "relates_to",
"confidence": 0.90,
"justification": "Beta is frozen stabilization branch that merges to main when ready"
},
{
"source_id": "dev-branch",
"target_id": "beta-branch",
"relationship": "relates_to",
"confidence": 0.90,
"justification": "Beta is cut from dev; fixes can be forward-merged from beta to dev"
},
{
"source_id": "bakery-package-manager",
"target_id": "stable-track",
"relationship": "manages",
"confidence": 0.85,
"justification": "Users select tracks and update via bakery commands"
},
{
"source_id": "bakery-package-manager",
"target_id": "dev-track",
"relationship": "manages",
"confidence": 0.85,
"justification": "Users select tracks and update via bakery commands"
},
{
"source_id": "bakery-package-manager",
"target_id": "beta-track",
"relationship": "manages",
"confidence": 0.85,
"justification": "Users select tracks and update via bakery commands"
},
{
"source_id": "dl-breadway-dev",
"target_id": "dev-track",
"relationship": "contains",
"confidence": 0.95,
"justification": "Dev builds distributed via dl.breadway.dev/dev/"
},
{
"source_id": "dl-breadway-dev",
"target_id": "beta-track",
"relationship": "contains",
"confidence": 0.95,
"justification": "Beta builds distributed via dl.breadway.dev/beta/"
},
{
"source_id": "dl-breadway-dev",
"target_id": "stable-track",
"relationship": "contains",
"confidence": 0.95,
"justification": "Stable builds distributed via dl.breadway.dev/"
},
{
"source_id": "breadcastd-daemon",
"target_id": "breadcast-core",
"relationship": "depends_on",
"confidence": 0.85,
"justification": "breadcastd owns the daemon logic built on breadcast-core functionality"
},
{
"source_id": "breadcastd-daemon",
"target_id": "screen-mirroring-pipeline",
"relationship": "contains",
"confidence": 0.95,
"justification": "breadcastd owns screen-capture/encode/serve pipeline"
},
{
"source_id": "breadcastd-daemon",
"target_id": "breadd-integration",
"relationship": "implements",
"confidence": 0.95,
"justification": "breadcastd publishes events and listens for commands via breadd integration"
},
{
"source_id": "breadcastd-daemon",
"target_id": "daemon-actor-pattern",
"relationship": "uses",
"confidence": 0.90,
"justification": "breadcastd's daemon actor has exactly one active session notion"
},
{
"source_id": "breadcast-ui",
"target_id": "gtk4",
"relationship": "depends_on",
"confidence": 0.90,
"justification": "breadcast is GTK4 Layer Shell popup"
},
{
"source_id": "breadcast-ui",
"target_id": "gtk4-layer-shell",
"relationship": "depends_on",
"confidence": 0.90,
"justification": "breadcast uses Layer Shell protocol for window positioning"
},
{
"source_id": "breadcast-ui",
"target_id": "bread-theme",
"relationship": "uses",
"confidence": 0.85,
"justification": "breadcast will inherit color palette from bread-theme once UI built"
},
{
"source_id": "cast-protocol",
"target_id": "mdns-discovery",
"relationship": "uses",
"confidence": 0.95,
"justification": "Cast devices discovered via mDNS"
},
{
"source_id": "dlna-protocol",
"target_id": "ssdp-discovery",
"relationship": "uses",
"confidence": 0.95,
"justification": "DLNA renderers discovered via SSDP"
},
{
"source_id": "device-discovered-event",
"target_id": "cast-protocol",
"relationship": "relates_to",
"confidence": 0.90,
"justification": "Event fires for both Cast and DLNA devices; protocol field distinguishes them"
},
{
"source_id": "device-discovered-event",
"target_id": "dlna-protocol",
"relationship": "relates_to",
"confidence": 0.90,
"justification": "Event fires for both Cast and DLNA devices; protocol field distinguishes them"
},
{
"source_id": "mirroring-started-event",
"target_id": "cast-start-command",
"relationship": "relates_to",
"confidence": 0.90,
"justification": "Event fires in response to cast.start command (among other triggers)"
},
{
"source_id": "mirroring-stopped-event",
"target_id": "cast-stop-command",
"relationship": "relates_to",
"confidence": 0.90,
"justification": "Event fires in response to cast.stop command (among other stop triggers)"
},
{
"source_id": "mirroring-failed-event",
"target_id": "cast-start-command",
"relationship": "relates_to",
"confidence": 0.90,
"justification": "Event fires when cast.start attempt fails"
},
{
"source_id": "breadd-integration",
"target_id": "bread-automation-fabric",
"relationship": "connects",
"confidence": 0.95,
"justification": "breadcastd publishes events into shared bread automation fabric"
},
{
"source_id": "breadd-integration",
"target_id": "bread-client-transport",
"relationship": "uses",
"confidence": 0.95,
"justification": "breadcastd links bread_client module directly for command subscription and emit"
},
{
"source_id": "breadd-integration",
"target_id": "device-discovered-event",
"relationship": "emits",
"confidence": 0.95,
"justification": "breadcastd publishes device_found events to bread fabric"
},
{
"source_id": "breadd-integration",
"target_id": "mirroring-started-event",
"relationship": "emits",
"confidence": 0.90,
"justification": "breadcastd publishes mirroring_started events to bread fabric"
},
{
"source_id": "breadd-integration",
"target_id": "mirroring-stopped-event",
"relationship": "emits",
"confidence": 0.90,
"justification": "breadcastd publishes mirroring_stopped events to bread fabric"
},
{
"source_id": "breadd-integration",
"target_id": "mirroring-failed-event",
"relationship": "emits",
"confidence": 0.90,
"justification": "breadcastd publishes mirroring_failed events to bread fabric"
},
{
"source_id": "breadd-integration",
"target_id": "cast-start-command",
"relationship": "receives",
"confidence": 0.95,
"justification": "breadcastd listens for bread.command.cast.start commands"
},
{
"source_id": "breadd-integration",
"target_id": "cast-stop-command",
"relationship": "receives",
"confidence": 0.95,
"justification": "breadcastd listens for bread.command.cast.stop commands"
},
{
"source_id": "screen-mirroring-pipeline",
"target_id": "gstreamer",
"relationship": "depends_on",
"confidence": 0.90,
"justification": "Encode pipeline uses GStreamer + plugins (pipewire, VA-API, hlssink3)"
},
{
"source_id": "screen-mirroring-pipeline",
"target_id": "xdg-desktop-portal",
"relationship": "depends_on",
"confidence": 0.90,
"justification": "Screen capture via XDG Desktop Portal ScreenCast interface"
},
{
"source_id": "breadcast-ui",
"target_id": "hyprland",
"relationship": "requires",
"confidence": 0.90,
"justification": "breadcast popup requires Hyprland (or Layer Shell compositor)"
},
{
"source_id": "hyprland",
"target_id": "wayland",
"relationship": "uses",
"confidence": 0.95,
"justification": "Hyprland is Wayland compositor"
},
{
"source_id": "hyprland-keybind",
"target_id": "breadcast-ui",
"relationship": "triggers",
"confidence": 0.95,
"justification": "Super+C keybind launches breadcast popup"
},
{
"source_id": "systemd-user-service",
"target_id": "breadcastd-daemon",
"relationship": "manages",
"confidence": 0.95,
"justification": "breadcastd.service enables/manages daemon via systemd --user"
},
{
"source_id": "breadcast-caststream-sys",
"target_id": "openscreen-vendor",
"relationship": "wraps",
"confidence": 0.95,
"justification": "breadcast-caststream-sys is Rust FFI wrapper for vendored OpenScreen C++"
},
{
"source_id": "breadcast-caststream-sys",
"target_id": "cast-streaming",
"relationship": "implements",
"confidence": 0.95,
"justification": "breadcast-caststream-sys realizes Cast Streaming sender protocol"
},
{
"source_id": "openscreen-vendor",
"target_id": "cast-streaming",
"relationship": "implements",
"confidence": 0.95,
"justification": "OpenScreen vendor code implements RTP/RTCP send + OFFER/ANSWER + AES encryption"
},
{
"source_id": "rust-cast-vendor",
"target_id": "castv2-protocol",
"relationship": "implements",
"confidence": 0.95,
"justification": "rust_cast implements CASTV2 protocol"
},
{
"source_id": "cast-device-send-message",
"target_id": "rust-cast-vendor",
"relationship": "extends",
"confidence": 0.95,
"justification": "Custom patch adds send_message method to rust_cast's CastDevice"
},
{
"source_id": "cast-device-send-message",
"target_id": "webrtc-namespace",
"relationship": "enables",
"confidence": 0.95,
"justification": "send_message allows OFFER/ANSWER exchange on urn:x-cast:com.google.cast.webrtc namespace"
},
{
"source_id": "breadcastd-daemon",
"target_id": "rust-cast-vendor",
"relationship": "depends_on",
"confidence": 0.90,
"justification": "breadcastd uses rust_cast for CASTV2 control channel"
},
{
"source_id": "breadcastd-daemon",
"target_id": "cast-device-send-message",
"relationship": "uses",
"confidence": 0.90,
"justification": "breadcastd uses patched send_message for Cast Streaming OFFER/ANSWER exchange"
},
{
"source_id": "semantic-versioning",
"target_id": "version-sorting",
"relationship": "relates_to",
"confidence": 0.90,
"justification": "Semantic version scheme ensures dev/beta builds sort newer than stable"
},
{
"source_id": "dev-release-workflow",
"target_id": "semantic-versioning",
"relationship": "uses",
"confidence": 0.90,
"justification": "Dev workflow computes X.Y.Z-dev.<timestamp>+<sha> versions"
},
{
"source_id": "beta-release-workflow",
"target_id": "semantic-versioning",
"relationship": "uses",
"confidence": 0.90,
"justification": "Beta workflow computes X.Y.Z-beta.<timestamp>+<sha> versions"
},
{
"source_id": "dev-release-workflow",
"target_id": "minisign",
"relationship": "uses",
"confidence": 0.90,
"justification": "Dev workflow signs index.json with BAKERY_MINISIGN_SEC_KEY"
},
{
"source_id": "beta-release-workflow",
"target_id": "minisign",
"relationship": "uses",
"confidence": 0.90,
"justification": "Beta workflow signs index.json with BAKERY_MINISIGN_SEC_KEY"
},
{
"source_id": "self-hosted-runner",
"target_id": "dev-release-workflow",
"relationship": "runs",
"confidence": 0.95,
"justification": "Dev-release workflow runs on [self-hosted, hestia] runner"
},
{
"source_id": "self-hosted-runner",
"target_id": "beta-release-workflow",
"relationship": "runs",
"confidence": 0.95,
"justification": "Beta-release workflow runs on [self-hosted, hestia] runner"
},
{
"source_id": "self-hosted-runner",
"target_id": "stable-release-workflow",
"relationship": "runs",
"confidence": 0.95,
"justification": "Stable-release workflow runs on [self-hosted, hestia] runner"
},
{
"source_id": "feature-branch",
"target_id": "dev-branch",
"relationship": "relates_to",
"confidence": 0.95,
"justification": "Feature branches branch from dev and merge back via PR"
},
{
"source_id": "bread-ecosystem",
"target_id": "release-cycle",
"relationship": "defines",
"confidence": 0.90,
"justification": "Bread ecosystem defines three-track release policy that breadcast follows"
},
{
"source_id": "bread-ecosystem",
"target_id": "bakery-package-manager",
"relationship": "includes",
"confidence": 0.90,
"justification": "Bakery is bread ecosystem distribution tool"
}
],
"hyperedges": [],
"input_tokens": 0,
"output_tokens": 0
}