Skip to content

refactor(source-control): read the commit and PR convention keys from docs/conventions/source-control.yaml #9725

Closed

Description

@kyle-sexton

Parent

Refs #5906

Depends on

  • none: on the frontier now

Outcome

The source-control plugin's commit and PR convention keys (pr_body_required_sections and the per-key
convention keys config-resolution.md defines) resolve from docs/conventions/source-control.yaml, which
already holds pr_open_state; .claude/source-control.md is read only when the YAML lacks the key, for one
release. /source-control:setup writes the YAML.

Decisions

  • ADR 0064 Decision 1: a plugin's team settings live in one docs/conventions/<concern>.yaml, validated by a
    JSON Schema at plugins/<plugin>/schemas/<concern>.schema.json (Decision 6), checked in CI by
    scripts/check-convention-yaml.sh (Decision 7). Script readers use the shared reader lib/parse-concern-value.sh.
  • ADR 0075: layers are plugin default < userConfig < team <home>/<concern>.yaml < personal
    <home>/<concern>.local.<ext>; every resolver reports the layer that supplied each value.
  • Migrate per-skill .claude config files to userConfig, one conventions doc, or the cascade (ADR 0018) #5906 (comment 2026-10-04): each reader keeps reading the old file for one release when the new file is
    absent, and this repository keeps its old file until the cleanup slice.

Key interfaces

  • plugins/source-control/schemas/source-control.schema.json, plugins/source-control/reference/config-resolution.md,
    the commit, pull-request and setup skills, plugins/source-control/skills/pull-request/scripts/parse-branch-issue.sh.
  • harness-config's audit engine mentions of the old file (plugins/harness-config/skills/audit/).

Done when

  • docs/conventions/source-control.yaml holds pr_body_required_sections with this repository's four sections, and scripts/check-convention-yaml.sh --check exits 0.
  • scripts/run-test-file.sh plugins/source-control/lib/config-root.test.sh and scripts/run-test-file.sh plugins/source-control/skills/pull-request/scripts/parse-branch-issue.test.sh exit 0, with cases for: the YAML value wins, the old file is read when the YAML lacks the key, and the resolver names the layer that supplied it.
  • scripts/run-test-file.sh plugins/harness-config/skills/audit/scripts/audit-engine.test.sh exits 0.
  • git grep -n ".claude/source-control.md" -- plugins/source-control/skills/commit plugins/source-control/skills/pull-request plugins/source-control/skills/setup prints only compatibility-read lines.
  • The PR body lists each migrated key with its new home and schema.
  • scripts/check-changelog-fragments.sh --check-required origin/main exits 0.

Out of scope

Activity

  1. added
    priority: mediumReal value, no hard deadline; normal backlog flow.
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    on Oct 24, 2026
  2. added theissue type on Oct 24, 2026
  3. added
    admission-deferredReady for the issue lane; work-unblock admits it when queued work is under the queued cap
    on Oct 24, 2026
  4. added
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    and removed
    admission-deferredReady for the issue lane; work-unblock admits it when queued work is under the queued cap
    on Oct 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.priority: mediumReal value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.

    Type

    Fields

    No fields configured for Task.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions