Repository navigation
Labels
priority: mediumReal value, no hard deadline; normal backlog flow.Real value, no hard deadline; normal backlog flow.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.A briefed fix or small feature; blast radius bounded by the brief, tests exist.
Description
Parent
Refs #5906
Blocks
Outcome
Sixteen source-control team keys whose only team home is .claude/source-control.md get one in
docs/conventions/source-control.yaml, with the legacy file read for a key the YAML lacks, for one release:
- nine loop-lane keys (
babysit_loop_discovery_scope,babysit_loop_fixing,babysit_loop_thread_resolution,
babysit_loop_draft_elevation,babysit_loop_barrier_overrides,babysit_loop_escalation,
babysit_loop_cycle_budget,babysit_loop_no_progress_threshold,babysit_loop_trusted_internal_bot_logins),
today "H2-only in the legacy file for now" (plugins/source-control/reference/config-resolution.md:46-51); - the seven babysit-prs repository-policy keys (
babysit_merge_method,babysit_merge_block_labels,
babysit_extra_dependency_manager_logins,babysit_approval_downgrade_logins,babysit_skip_downgrade_logins,
babysit_review_gate_context,babysit_ci_gateway_context), read today only from the target's default-branch
legacy file (config-resolution.md:545-554,skills/babysit-prs/scripts/babysit_repo_config.py:4,36).
Two readers of babysit_loop_merge that cannot run without the legacy file move to the YAML too.
Decisions
- ADR 0064 Decision 1 and ADR 0075 fix 3: script-read team settings are YAML in
docs/conventions/<concern>.yaml,
validated byplugins/source-control/schemas/source-control.schema.json. - ADR 0064 Decision 9: babysit keeps its own fetch of the target's default branch through the contents API, with no
ref. - ADR 0039 and
config-resolution.md:566-611: the merge modes are unchanged. Hold lists are the add-only union with
theuserConfigfallback,babysit_skip_downgrade_loginsis remove-only, and the review pair and trigger phrase stay
userConfig-only. - 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 lacks the key.
- chore: drop the one-release .claude config reads and this repository's old config files #9737 record: once
.claude/source-control.mdis absent at the base SHA,babysit_loop_mergefrom the YAML sets
the merge rung by itself (babysit_merge_policy.py:946-948left this to the cleanup work). With both files, the
lower value still binds.
Key interfaces
plugins/source-control/schemas/source-control.schema.json,lib/convention-key.sh,
skills/babysit-prs/scripts/babysit_repo_config.pyand its fake,babysit_merge_policy.py.plugins/harness-config/skills/audit/scripts/audit-engine.sh:1369-1406, the unattended-lane signal.plugins/source-control/reference/config-resolution.md,docs/conventions/pr-pipeline/README.md:1079-1083.- The model-read files for the nine loop keys, which have no script reader:
plugins/source-control/skills/babysit-loop/SKILL.md,plugins/source-control/skills/babysit-loop/reference/cycle-shape.md
andplugins/source-control/skills/babysit-loop/reference/no-progress-detector.md.
Done when
-
plugins/source-control/schemas/source-control.schema.jsondefines the sixteen keys above, andscripts/check-convention-yaml.sh --checkexits 0. -
scripts/run-test-file.sh plugins/source-control/skills/babysit-prs/scripts/tests/test_babysit_repo_config.pyexits 0 with cases for: a remote YAML value wins over the legacy H2; a repository with only the legacy file still resolves; a YAML hold list unions with theuserConfighold list; a YAMLbabysit_skip_downgrade_loginsonly narrows the fallback set; a YAML the reader rejects is a repository config error with no fallback to the legacy file; a YAML carrying only one of the nine loop-lane keys counts as tracked adoption (merge default c2-mechanical). -
scripts/run-test-file.sh plugins/source-control/skills/babysit-prs/scripts/tests/test_babysit_merge_policy.pyexits 0 with cases for: no legacy file and a YAMLbabysit_loop_mergesets the rung from the YAML; both files bind the lower value; neither file leaves the rungoff. -
scripts/run-test-file.sh plugins/harness-config/skills/audit/scripts/audit-engine.test.shexits 0 with a case where onlydocs/conventions/source-control.yamlsetsbabysit_loop_mergeand the unattended lane is reported, and a case where the YAML carries only a non-merge loop-lane key and the unattended lane is reported at the c2-mechanical baseline. -
git grep -nE "H2-only in the legacy file|YAML alone never raises" -- plugins docs/conventions ":!*CHANGELOG.md"prints nothing. - The PR body lists each of the sixteen keys with its new home and schema.
-
scripts/check-changelog-fragments.sh --check-required origin/mainexits 0.
Out of scope
- Dropping the legacy reads and deleting this repository's
.claude/source-control.md(chore: drop the one-release .claude config reads and this repository's old config files #9737). - Moving other repositories' keys (the host-run slice filed beside this one).
Posted by the issue-triage session. This was generated by AI.
Metadata
Metadata
Assignees
Labels
priority: mediumReal value, no hard deadline; normal backlog flow.Real value, no hard deadline; normal backlog flow.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.A briefed fix or small feature; blast radius bounded by the brief, tests exist.
Type
Fields
Work status
agent-ready
Activity
github-actions commentedon Nov 2, 2026
Proposed work class: work-class: scoped
Basis: automated intake triage; the lanes App applied this class.
Size: Medium
Complexity: Medium
Uncertainty: Known
Flags: none
Blocked by: none
Understood: add sixteen babysit-related keys (nine loop-lane, seven babysit-prs policy) to docs/conventions/source-control.yaml and its schema. Readers fall back to the legacy .claude/source-control.md for one release. The two babysit_loop_merge readers move to the YAML too. The outcome, decisions and done-when checks are exact, so I found nothing missing. I found no duplicate among the open issues. Dropping the legacy reads (#9737) is out of scope.
Automated triage, applied by the lanes App.
github-actions commentedon Nov 2, 2026
melodic-automation-lanes commentedon Nov 2, 2026
This records a re-fire of an earlier refusal, not a new refusal. The lanes kill switch stopped run 41395890218, the work-resolve-issue run that
agent-readystarted, before it did any work; that run ended at 2026-11-02T06:45:45Z. work-unblock has now removed and addedagent-readyback to start a fresh run. A kill-switch refusal is no fault in this issue or the lanes, so it never counts against later re-fires; after limits.limit-stops-per-issue of them since a person last addedagent-readyor a run last reported, work-unblock waits longer before each one, up to 24 hours.github-actions commentedon Nov 2, 2026
github-actions commentedon Nov 2, 2026