mr-milchick 3.3.1

CLI for merge request governance in GitLab CI pipelines
Documentation
# Mr. Milchick runtime config for GitHub-oriented runs.
#
# This file holds non-secret operational settings only.
# Keep CI/review metadata in GitHub Actions env/context, and keep secrets in env:
# - GITHUB_TOKEN
# - GITLAB_TOKEN
# - MR_MILCHICK_SLACK_BOT_TOKEN
# - MR_MILCHICK_SLACK_WEBHOOK_URL
#
# If you want to use a different config file path, set:
# - MR_MILCHICK_CONFIG_PATH=/path/to/other-config.toml

[execution]
# When true, `refine` behaves like a dry run and will not mutate the platform.
# dry_run = true

# Controls when notifications are emitted.
# Valid values:
# - "always"
# - "on-applied-action"
notification_policy = "always"

[platform]
# Review platform compiled into this binary.
# Valid values:
# - "gitlab"
# - "github"
kind = "github"

# Optional GitHub API base URL override.
# Leave this commented for normal github.com usage.
# base_url = "https://api.github.com"

[reviewers]
# Maximum number of area-routed reviewers to assign from `reviewers.definitions`.
# Mandatory reviewers and fallback behavior are resolved independently of this cap.
# max_reviewers = 2

# Define reviewer routing entries under [[reviewers.definitions]].
# Supported fields:
# - username   : required review-platform username
# - areas      : optional list of owned areas
# - fallback   : optional boolean, used when no area match is found
# - mandatory  : optional boolean, always include this reviewer

# Example fallback reviewer:
# [[reviewers.definitions]]
# username = "milchick-duty"
# fallback = true

# Example mandatory reviewer:
# [[reviewers.definitions]]
# username = "principal-reviewer"
# mandatory = true

# Example area-based reviewers:
# [[reviewers.definitions]]
# username = "alice"
# areas = ["frontend", "packages"]

# [[reviewers.definitions]]
# username = "carol"
# areas = ["backend"]

[codeowners]
# Enable or disable CODEOWNERS-based routing.
# Defaults to true when omitted.
# enabled = true

# Optional explicit CODEOWNERS path.
# If omitted, Milchick auto-discovers common CODEOWNERS locations.
# path = ".github/CODEOWNERS"

[inference]
# Local advisory inference is available only when the binary is compiled with
# the `llm-local` feature. If configured without that feature, Milchick will
# report that inference is configured but not compiled in.

# Enable local advisory review suggestions.
# enabled = false

# Path to a local GGUF model file.
# model_path = "models/review.gguf"

# Timeout budget for the local inference pass, in milliseconds.
# timeout_ms = 15000

# Maximum total patch bytes included in the advisory prompt.
# max_patch_bytes = 32768

# Context window budget for the model runtime.
# context_tokens = 4096

# Emit detailed advisory inference diagnostics in command output.
# trace = false

[notifications]
# Notification sink config lives under the nested sections below.
# Uncomment only the sink types that match your compiled features and secrets.

# Slack workflow sink configuration.
# Requires:
# - binary compiled with `slack-workflow`
# - MR_MILCHICK_SLACK_WEBHOOK_URL in env

# [notifications.slack_workflow]
# enabled = true
#
# Channel ID passed into the workflow payload.
# channel = "C01234567"

# Slack app sink configuration.
# Requires:
# - binary compiled with `slack-app`
# - MR_MILCHICK_SLACK_BOT_TOKEN in env

# [notifications.slack_app]
# enabled = true
#
# Slack channel ID where review notifications should be posted.
# channel = "C01234567"
#
# Optional Slack API base URL override for tests and local mocks.
# base_url = "https://slack.com/api"

# Optional mapping from review-platform usernames to Slack user IDs.
# [notifications.slack_app.user_map]
# "arthur" = "U028DDKDJ4E"
# "principal-reviewer" = "U03D9NN5HB6"
# "bob" = "U028GSCQBUJ"

[templates]
# Message template overrides live under the sections below.
# If omitted, Milchick uses built-in defaults.

# GitHub summary comment override.
# [templates.github]
# summary = """
# ## {{summary_title}}
#
# {{summary_intro}}
#
# {{findings_block}}
#
# {{actions_block}}
#
# _{{closing_tone_message}}_
# """

# GitLab summary comment override.
# This section is only relevant if you intentionally point this config at a
# GitLab-compiled binary instead of the GitHub one.
# [templates.gitlab]
# summary = """
# ## {{summary_title}}
#
# {{summary_intro}}
#
# {{findings_block}}
#
# {{actions_block}}
#
# _{{closing_tone_message}}_
# """

# Slack app template overrides.
# [templates.slack_app]
# first_root = ":github: {{notification_subject}} :pepe-review:"
# first_thread = """
# *{{notification_title}}*
# Pull request: {{mr_link}}
# {{reviewers_line}}
# """
# update_root = ":github: {{notification_subject}} :thread:"
# update_thread = """
# Pull request: {{mr_link}}
# {{findings_block}}
# {{actions_block}}
# _{{summary_footer}}_
# """

# Slack workflow template overrides.
# [templates.slack_workflow]
# first_title = "{{notification_subject}}"
# first_thread = """
# {{notification_title}}
# Pull request: {{mr_link}}
# {{reviewers_line}}
# """
# update_title = "{{notification_subject}}"
# update_thread = """
# Pull request: {{mr_link}}
# {{findings_block}}
# {{actions_block}}
# {{summary_footer}}
# """