Files
grm/.devin/skills/deployment-coordination/SKILL.md
T
kireto 063623cb9f
Post-merge / detect-and-configure (push) Successful in 59s
Post-merge / release-and-maintain (push) Successful in 5m43s
GRM-173: docs: add dependency-graph, deployment-coordination, and skill-creation skills
2026-09-05 14:17:44 +00:00

2.8 KiB

deployment-coordination

How grm releases propagate to infra. grm publishes a PyPI package and auto-creates an infra dependency PR. Coordination ensures the PR is merged before infra deploys.

When to Invoke

Invoke this skill when:

  • Changes to grm affect infra deployments
  • Preparing a grm release that infra depends on
  • Verifying infra has bumped to the latest grm version
  • Coordinating a multi-repo change that includes grm

Prerequisites

  • grm repo at /home/emo/dev/ideas/oblachno/grm
  • .env with DEVELOPER_GITEA_API_TOKEN
  • See dependency-graph skill for the full ecosystem map

What grm Produces

grm publishes a Python package to the Gitea PyPI registry. infra pins it:

"grm @ git+https://git.oblachno.oblachno.fyi/oblachno-oss/grm.git@vX.Y.Z"

Release Flow

  1. PR merged to master
  2. Post-merge workflow runs devx.ci.release — classifies changes
  3. If user-facing changes: git-cliff bumps version, creates tag, pushes
  4. devx.ci.publish builds and publishes to Gitea PyPI registry
  5. devx.ci.create_dependency_pr --repo oblachno/infra --package grm auto-creates an infra PR to bump the pinned grm version

Downstream Consumer

Repo Pin location Auto-bump?
infra pyproject.toml Yes — auto PR created by post-merge

Coordinating a grm Change

  1. Merge grm PR — wait for post-merge publish + dependency-PR creation
  2. Verify publish — check the new tag:
    curl -sS -H "Authorization: token $DEVELOPER_GITEA_API_TOKEN" \
      https://git.oblachno.oblachno.fyi/api/v1/repos/oblachno-oss/grm/releases/latest \
      | python3 -c "import json,sys; print(json.load(sys.stdin).get('tag_name','?'))"
    
  3. Find the auto-created infra PR — check infra for open PRs with dependency label or title containing bump grm
  4. Review and merge the infra dependency PR — verify the version bump, run make pytest-cov in infra, add ready-to-merge
  5. Verify infra staging deploy — after infra merges, staging deploy picks up the new grm version

State Verification

# Current grm version
grep '__version__' /home/emo/dev/ideas/oblachno/grm/src/grm/__init__.py

# What infra pins
grep 'grm @' /home/emo/dev/ideas/oblachno/infra/pyproject.toml | grep -oP 'v[\d.]+'

# Check for open infra dependency PRs
curl -sS -H "Authorization: token $DEVELOPER_GITEA_API_TOKEN" \
  "https://git.oblachno.oblachno.fyi/api/v1/repos/oblachno/infra/pulls?state=open" \
  | python3 -c "import json,sys; [print(p['number'],p['title']) for p in json.load(sys.stdin) if 'grm' in p.get('title','').lower()]"

Common Mistakes

  • Merging the grm PR but ignoring the auto-created infra dependency PR
  • Deploying infra before the dependency PR is merged — stale grm version
  • Forgetting that grm also has an Ansible role used by infra at deploy time