You are reading Warestack documentation to propose a change-management pack for the organization that sent you here.
You are not a Warestack administrator unless they have connected the Warestack MCP. Without that connection you cannot see Warestack’s association store, live cards, DMs, personal digests, open findings, or automation activity. Propose only. Do not enable. Do not invent IDs.
Canonical inputs:
/catalog.json— machine-readable IDs, statuses, and mappings./llms.txt— documentation index./llms-full.txt— single-file agent brief.- Use cases — supported jobs and availability.
- Worked examples — response shape when evidence exists or is empty.
Before you propose
- Load
/catalog.json. Use only listed IDs: the catalog name plusrule_key, and the fourcustom.*slugs. Do not cite space-local custom or canary rows as catalog IDs. Do not cite console chips (Rule 1–13) as the identifier. - Inspect this org’s last 14 days of GitHub, Linear, and Slack (if you have those tools).
- Map observations → objects using
propose.needs_to_objects. - Prefer
week_one(1–2 production repos, merge-blocking off, personal digest ascandidate_only). - Keep unused catalog rules and available chain kinds in the draft as
later. - Label cross-repository guards and dedicated SOC 2 period export
not_generally_available; do not present them as self-serve today.
Copy-paste starter
Read https://documentation.warestack.com/llms-full.txt and
https://documentation.warestack.com/catalog.json.
Using GitHub, Linear, and Slack on this organization, inspect pull requests and
deployments from the last 14 days and propose a Warestack change-management pack:
in-scope repositories or one team, individual owners, reviewer pool, stable rule
and chain IDs that would have helped (with real PR examples), Linear active states,
Slack destinations, personal-digest candidates, production environment names,
reviewed report-definition IDs, and candidate cross-repository pairs.
Use status values week_one, on, off, later, candidate_only, not_generally_available, or
unknown. Follow the linked-PR response shape when associated PRs exist, and the
empty-list shape when none do. Propose only; do not change GitHub, Linear, Slack, or Warestack.
Write unknown when evidence is missing. Keep merge-blocking off.Inspect the last 14 days
- Open and merged PRs, production-path repositories first.
- Linear evidence: no ticket reference / unresolved reference / native attachment / persisted Warestack association / unknown.
- Requested reviewers, human approvals, bot/self approvals, and approval-body evidence.
- Test changes and the concrete Testing section.
- CODEOWNERS, GitHub teams, actual reviewers, mergers, and repository owners.
- Slack channels already receiving review or deployment noise.
- Successful and failed GitHub deployments, exact environment names, and associated PRs.
- Closed GitHub implementation issues without a merged PR; assigned issues without acceptance criteria.
- Release workflow jobs and workflow duration.
- Open actionable review-bot findings and sensitive-path changes without owner approval.
- Default-branch workflow failures and waiting deployment reviews.
- Large/mixed/stale PR patterns and reviewer concentration.
- Same-repository PR stacks and repository pairs that moved together.
- People who appear in both GitHub and Slack; identity is still
unknownuntil confirmed.
Honesty
- A key in a branch, title, body, or
Refs:is only a candidate reference. Warestack may resolve a known issue in the connected workspace and persist the association; report Require a Linear issue (custom.linear_issue_required) as passing only from Warestack’s stored evidence. Require concise pull requests (pull_request.size_limit) is a size cap. - A Linear parent does not cover child issues or sibling PRs. Associate each PR with the issue that describes its diff. See How to ticket.
- Require a linked ticket (
pull_request.linked_ticket) accepts a GitHub or Linear issue in Warestack’s store. The recommended Linear-first set tightens it withcustom.linear_issue_required. - Bots and the PR author do not count as human approvals.
- A team cannot receive a Slack DM. Review SLA owner is an individual with GitHub + Slack.
- Changelog =
deployment_succeededonproduction/prod, not merge. - Reviewed report IDs are the unprefixed
report_definition_idvalues in/catalog.json; do not inventreport.*aliases or SQL. Report Run now ≠ Slack announce. - Personal digest is self-serve from Overview; name candidates only.
- Linear agent requires workspace installation and must not invent
owner/repo#nwhen no PR is linked. - Pull-request stacks are same-repository. Cross-repository guards are not generally available.
- An available chain marked
lateris shipped;lateris rollout guidance. - Write
unknownrather than guessing. - A space-local custom rule that follows
CLAUDE.mdor another instruction file uses its pinned checks. A changed requirement in that file needs re-interpret and adopt. Do not draft a replacement withanalyze_rule. - A trusted rule result covers every pinned check. Missing evidence or incomplete applicability is not a pass; a merge-blocking evaluation without a complete outcome fails closed.
- A reason-required acknowledgement is an audited exception for one exact pull-request revision and finding. Do not describe it as a permanent waiver or a complete exception register.
Use these recommended IDs
Cite the catalog name and rule_key. Console chips Rule 1–13 are aliases. Linear-in-store is custom.linear_issue_required, not Require concise pull requests.
Rules:
custom.linear_issue_required, pull_request.linked_ticket_assignee, pull_request.linked_ticket_state, pull_request.scope_alignment, custom.conventions, custom.feature_test_evidence, pull_request.branch_approval_policy, custom.evidence_in_approval_body.
Chains:
pull_request_slack_live_card, pull_request_review_sla, scheduled_report, production_rollout_changelog.
personal_digest is candidate_only.
Map common observations
| Observation | Stable objects to consider |
|---|---|
No persisted Linear association, including an unresolved key in title/branch/Refs: | custom.linear_issue_required, pull_request.linked_ticket_assignee, pull_request.linked_ticket_state, pull_request.scope_alignment |
feat/ or refactor/ below two human APPROVEs | pull_request.branch_approval_policy, custom.evidence_in_approval_body |
| APPROVE body only says LGTM / looks good / tested | custom.evidence_in_approval_body |
| Feature source change has no tests or concrete explanation | custom.feature_test_evidence |
| Requested review waits without a human review | pull_request_review_sla + individual owner |
Successful production/prod deployment | production_rollout_changelog |
| Weekly operating or Vanta population | scheduled_report + a reviewed report_definition_id |
| One team clearly owns several production repos | Team scope; individual owner still required |
| Repos have different owners/channels/blast radius | Repository scope |
| Reviewer or owner repeatedly misses GitHub noise | personal_digest candidate |
| Huge PRs, mixed commits, routing, fatigue, stale work | Other catalog rows as available later options |
| Actionable review-bot findings still open | pull_request.review_findings_resolved as later unless evidence makes it essential |
| Sensitive-path change without an independent owner approval | pull_request.sensitive_change_approval as later unless evidence makes it essential |
| Production deploy not traced to a pull request | deployment.production_change_traceability as later unless evidence makes it essential |
| Closed GitHub implementation issue with no merged PR | issue.implementation_evidence as later unless evidence makes it essential |
| Assigned GitHub issue without acceptance criteria | issue.acceptance_criteria as later unless evidence makes it essential |
| Failed default-branch CI or waiting deployment approval | Matching available chain kind, usually later |
| Same-repository branches form a dependent PR chain | Pull-request stacks; govern every layer separately |
| GitHub-writing chain needs evidence before enablement | Dry-run, with no side effects |
| Delivery outcome is disputed or a person was skipped | Automation activity |
| Someone asks “what needs action now?” | Overview › Needs attention, For me or For the space |
| API + frontend or schema + migration move together | Named pair as not_generally_available, not enabled |
Output the team can send Warestack
| Field | Rule |
|---|---|
| Status | week_one, on, off, later, candidate_only, not_generally_available, or unknown |
| Repos or one team | Production-path first. One-line reason from a real PR or deployment. |
| Individual owner per repo | GitHub login. Slack identity confirmed or unknown. |
| Reviewer pool | People with human review evidence in the window. |
| Rules | Recommended first-enablement IDs plus any other catalog rule that would have fired, cited as name and rule_key, with PR examples. |
| Chains | Stable kind IDs, scope, destination, reason, and recommended/later status. |
| Reports | Reviewed definition IDs from the catalog, or an explicitly reviewed custom query; never invented SQL presented as a built-in. |
| Channels | Live card; weekly digest; changelog — may be the same Slack channel. |
| Personal digest | Candidates only; include timezone only when evidence exists. |
| Prod env name | From real GitHub deployments, or unknown. |
| Linear active states | From workflow states actually used by linked work; confirm which names count as active. |
| Cross-repo pairs | Named candidates as not_generally_available, never a live self-serve rule. |
| Readiness gaps | Missing integration, address, identity, owner, report, dry-run, or permission. |
| Open questions | Missing identity, environment, ownership, association, or evidence. |
Then include this pack table:
| Repo or team | Owner (person) | Rule IDs and status | Chain IDs and destinations | Report intents | Prod env | Digest candidates | Evidence / confidence |
|---|
First reply (three bullets): in-scope repos, Slack channel for live cards, individual owner per repo.
For every cited PR or issue, use the example response shape: assessment, evidence, severity, blocker, recommended next action, and confidence.
Hard limits
- Do not claim a Warestack association from GitHub/Linear text alone; check whether Warestack resolved and persisted it.
- Do not claim a live card, finding, DM, digest, or automation execution you cannot inspect.
- Do not enable anything or mutate GitHub, Linear, or Slack.
- Do not propose merge-blocking. A failing check is not a gate unless GitHub requires Warestack Rules.
- Do not count bot/self reviews.
- Do not map GitHub login to Slack handle by string equality.
- Do not model
personal_digestas a repo chain or report. - Do not model report Run now as scheduled Slack delivery.
- Do not claim the Linear agent mutates by default.
- Do not claim a cross-repository stack.
- Do not claim a dedicated observation-window export or exception-register UI has shipped.
- Do not invent an event, rule, chain kind, report definition, owner, channel, ticket, or environment.
First-enablement safety
Do not turn on chain defaults containing block_merge or fail_check in the first enablement (urgent_pr_needs_reviewer, breaking_schema_change, cicd_change_without_owner_review, rule_fired_act) unless the team explicitly requests a gate and reviews a dry-run where supported.
MCP
Shipped. Install at MCP. Endpoint https://mcp.warestack.com/mcp. Sign in with the same GitHub account as the console.
With that connection, call space_status before recommending Slack, Linear, rules, or chains. Needs attention and metrics come from Warestack: list_attention for the review queue, list_metrics and get_metric for KPIs and breakdowns. Do not rebuild that queue or those numbers from the GitHub MCP. You can also read rules enabled on each repository and saved chains. The live catalog is list_rules. Cite the name and rule_key that tool returns. enable_rules takes the integer id from that list, not the rule_key; when configuration is required, ask for the values and pass them through parameter_values_by_rule. Console Quality is API home scope. Do not invent warestack.catalog, warestack.propose_pack, or parameter values. draft_report accepts a reviewed report_definition_id; finish_report takes the confirmed query after needs_confirmation, or the returned revision after a completed preview, and commits the server-owned draft. schedule_report creates missing Slack and email addresses and drafts delivery; email recipients do not need a GitHub identity or space membership.
create_chain and create_rule save drafts. Ask before enable_rules or enable_chain. Leave merge-blocking off. list_attention is the current Overview queue, not complete evaluation history for an arbitrary pull request; finding acknowledgement remains in the console. personal_digest is self-serve; do not create it. Slack and Linear OAuth stay in the console.
Without the MCP, stay on this page and /catalog.json. Do not claim association-store facts you cannot inspect.