{ "module": "mesh-issues", "version": "1", "slug": "issues", "seats": [ { "name": "issue-tracker", "scope": "mesh", "serves": [ "open", "get", "list", "move", "note", "link", "import", "groom", "set", "tracking", "reserve", "fix-times" ] } ], "claims": [ { "name": "issue-tracker", "scope": "mesh", "serves": [ "open", "get", "list", "move", "note", "link", "import", "groom", "set", "tracking", "reserve", "fix-times" ] } ], "emits": [ "opened", "moved", "noted", "linked", "imported", "set", "triaged", "ready", "ready-to-verify", "reserved" ], "consumes": [ "mesh-issues.opened", "mesh-issues.moved", "mesh-delivery.transition" ], "invokes": [ "claude-code.claude_code_judge", "seat:mesh-delivery.checks", "seat:operator-channel.notify", "gitea.gitea_pull_reviews", "records.records_status", "records.records_list", "records.records_read", "mesh-knowledge.knowledge_highest" ], "logs": [ "changes" ], "state": [ { "name": "issues", "history": 8 }, "counters", "grooming", "reservations" ], "config": { "first-number": { "type": "number", "description": "The number the first issue the tracker numbers gets, read once when its counter starts and never again; the import reads it as the boundary between the folders hq numbered and the tracker's issues.", "minimum": 1, "trusted": true, "default": 365 }, "owners": { "type": "list", "description": "The registered places an issue's located-in may name: a repository, or a repository and a folder in it separated by a space.", "trusted": true, "default": [ "hq", "mesh-catalog", "mesh-catalog modules/adwaita", "mesh-catalog modules/artifact-store-tools", "mesh-catalog modules/asus-zephyrus-g14", "mesh-catalog modules/audit-logger", "mesh-catalog modules/avahi", "mesh-catalog modules/baserow", "mesh-catalog modules/betterbird", "mesh-catalog modules/blueman", "mesh-catalog modules/bluetooth", "mesh-catalog modules/build-agent", "mesh-catalog modules/ca-trust", "mesh-catalog modules/claude-code", "mesh-catalog modules/claude-licence-manager", "mesh-catalog modules/clipmenu", "mesh-catalog modules/confluence", "mesh-catalog modules/cups", "mesh-catalog modules/dbus", "mesh-catalog modules/de-spiegel", "mesh-catalog modules/desk-channel", "mesh-catalog modules/disk-load", "mesh-catalog modules/distribution", "mesh-catalog modules/dmenu", "mesh-catalog modules/dnsmasq", "mesh-catalog modules/docker", "mesh-catalog modules/docker-compose", "mesh-catalog modules/dunst", "mesh-catalog modules/fail2ban", "mesh-catalog modules/feh", "mesh-catalog modules/flatpak", "mesh-catalog modules/fonts", "mesh-catalog modules/forticlient", "mesh-catalog modules/gitea", "mesh-catalog modules/gitlab", "mesh-catalog modules/gnome-keyring", "mesh-catalog modules/grafana", "mesh-catalog modules/hello-web", "mesh-catalog modules/home-assistant", "mesh-catalog modules/hostname", "mesh-catalog modules/i3", "mesh-catalog modules/i3status-rust", "mesh-catalog modules/icecast", "mesh-catalog modules/influxdb", "mesh-catalog modules/invoicing", "mesh-catalog modules/jira", "mesh-catalog modules/keycloak", "mesh-catalog modules/lab", "mesh-catalog modules/lemurs", "mesh-catalog modules/letta", "mesh-catalog modules/local-model-consumer", "mesh-catalog modules/localization", "mesh-catalog modules/logrotate", "mesh-catalog modules/mailu", "mesh-catalog modules/marrytts", "mesh-catalog modules/matrix", "mesh-catalog modules/memory-pressure", "mesh-catalog modules/mesh-catalog", "mesh-catalog modules/mesh-cli", "mesh-catalog modules/mesh-delivery", "mesh-catalog modules/mesh-issues", "mesh-catalog modules/mesh-vault", "mesh-catalog modules/mesh-watcher", "mesh-catalog modules/messenger", "mesh-catalog modules/minio", "mesh-catalog modules/model-usage", "mesh-catalog modules/mongodb", "mesh-catalog modules/mosquitto", "mesh-catalog modules/mounts", "mesh-catalog modules/mssql", "mesh-catalog modules/n8n", "mesh-catalog modules/nats", "mesh-catalog modules/netcheck", "mesh-catalog modules/networkmanager", "mesh-catalog modules/nextcloud", "mesh-catalog modules/nextcloud-client", "mesh-catalog modules/nfs-server", "mesh-catalog modules/nftables", "mesh-catalog modules/nm-applet", "mesh-catalog modules/node-env", "mesh-catalog modules/nodered", "mesh-catalog modules/ollama", "mesh-catalog modules/only-office", "mesh-catalog modules/openai-consumer", "mesh-catalog modules/openrazer", "mesh-catalog modules/pacman", "mesh-catalog modules/photos-eef", "mesh-catalog modules/photos-filip", "mesh-catalog modules/picom", "mesh-catalog modules/polychromatic", "mesh-catalog modules/postgres", "mesh-catalog modules/power", "mesh-catalog modules/powerlevel10k", "mesh-catalog modules/records", "mesh-catalog modules/redis", "mesh-catalog modules/restic", "mesh-catalog modules/rofi", "mesh-catalog modules/route-adapter", "mesh-catalog modules/route-proxy", "mesh-catalog modules/screen-lock", "mesh-catalog modules/searxng", "mesh-catalog modules/sensors", "mesh-catalog modules/showcase", "mesh-catalog modules/slack", "mesh-catalog modules/snapd", "mesh-catalog modules/ssh-client", "mesh-catalog modules/sshd", "mesh-catalog modules/step-ca", "mesh-catalog modules/sudo", "mesh-catalog modules/supabase", "mesh-catalog modules/systemd", "mesh-catalog modules/systemd-networkd", "mesh-catalog modules/systemd-resolved", "mesh-catalog modules/telegram", "mesh-catalog modules/time-sync", "mesh-catalog modules/triggerhappy", "mesh-catalog modules/umami", "mesh-catalog modules/unifi", "mesh-catalog modules/website", "mesh-catalog modules/xclip", "mesh-catalog modules/xdg", "mesh-catalog modules/xorg", "mesh-catalog modules/xterm", "mesh-catalog modules/zfs", "mesh-catalog modules/zsh", "mesh-catalog modules/zsh-autosuggestions", "mesh-catalog modules/zsh-syntax-highlighting", "mesh-controller", "mesh-host", "mesh-lab", "mesh-media-catalog", "mesh-sdk", "mesh-tools" ] }, "duplicate-check": { "type": "string", "description": "Whether a new issue is checked against the open ones for a duplicate: off stops it, anything else is on (novox/hq ADR 0278 §7).", "trusted": true, "default": "on" }, "judge-model": { "type": "string", "description": "The model the duplicate check asks, by the agent's name for it, such as sonnet; empty is the tracker's own default.", "trusted": true, "default": "sonnet" }, "forge-owner": { "type": "string", "description": "The owner on the forge of the repositories an issue's fixed-by names, for asking after a pull request's delivery (novox/hq ADR 0279 §3); empty asks no forge.", "trusted": true, "default": "novox" }, "stuck-after": { "type": "string", "description": "How long a fix may be merged and not delivered before it is said stuck, as a duration such as 2h (novox/hq ADR 0281); empty is the tracker's own default.", "pattern": "|[0-9]+(\\.[0-9]+)?(ns|us|µs|ms|s|m|h)([0-9]+(\\.[0-9]+)?(ns|us|µs|ms|s|m|h))*", "trusted": true, "default": "2h" }, "worker-stale-after": { "type": "string", "description": "How long an issue's worker stays current with nothing done on it, as a duration such as 24h (novox/hq ADR 0284 §4); empty is the tracker's own default.", "pattern": "|[0-9]+(\\.[0-9]+)?(ns|us|µs|ms|s|m|h)([0-9]+(\\.[0-9]+)?(ns|us|µs|ms|s|m|h))*", "trusted": true, "default": "24h" }, "delivered-not-resolved-after": { "type": "string", "description": "How long an issue may stay in fixing once every fix it names is delivered before the operator is warned, as a duration such as 1h (novox/hq issue 483); empty is the tracker's own default.", "pattern": "|[0-9]+(\\.[0-9]+)?(ns|us|µs|ms|s|m|h)([0-9]+(\\.[0-9]+)?(ns|us|µs|ms|s|m|h))*", "trusted": true, "default": "1h" }, "decision-floor": { "type": "number", "description": "The highest decision number already taken somewhere the tracker cannot read, such as an open branch of hq; the decision sequence's first number is one above it, read once when the counter starts (novox/hq issue 424).", "minimum": 0, "trusted": true, "default": 293 }, "research-floor": { "type": "number", "description": "The highest research number already taken somewhere the tracker cannot read; the research sequence's first number is one above it, read once when the counter starts (novox/hq issue 424).", "minimum": 0, "trusted": true, "default": 45 } }, "resources": [ { "id": "state", "type": "directory", "mode": "0700", "place": "." }, { "id": "settings", "trusted": true, "type": "file", "path": "${dir:state}/settings.json", "mode": "0600", "takes-config": ["first-number", "owners", "duplicate-check", "judge-model", "forge-owner", "stuck-after", "worker-stale-after", "delivered-not-resolved-after", "decision-floor", "research-floor"], "merge": "json", "template": "files/settings.json" } ], "build": { "artifacts": [ { "name": "tools", "kind": "bundle", "language": "go", "system": "arch", "from": "cmd/mesh-issues", "binary": "mesh-issues", "loads": [ "mesh-issues" ], "env": { "MESH_ISSUES_SETTINGS": "${dir:state}/settings.json" } }, { "name": "files", "kind": "archive", "from": "files" } ] } }