Files
mesh-catalog/modules/mesh-issues/module.json
T

328 lines
11 KiB
JSON

{
"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"
}
]
}
}