Skip to content

Add repository-scoped governance settings to basectl config #2668

Open

Description

@codeforester

Problem

The accepted Base governance design and implementation plan identify package 3 as a required deliverable. This issue translates that package into a reviewed, bounded issue/PR train; it does not authorize implementation before the issue reaches Ready.

Expected behavior

Implement the accepted basectl config interface for repository-scoped base_manifest.yaml governance settings after the schema work in #1613. Support separate issue/PR loop limits (default three), reviewer mode, Ready freshness and review-policy selection. Make repository scope explicit; validate schema; preserve existing machine-local config behavior; show a useful diff; fail clearly outside a repository or for unsupported settings. Migrate .github/base-review-policy.yml with a compatibility period and do not remove its reader before the replacement is released and documented.

Scope and non-goals

Scope: Implement the accepted basectl config interface for repository-scoped base_manifest.yaml governance settings after the schema work in #1613. Support separate issue/PR loop limits (default three), reviewer mode, Ready freshness and review-policy selection. Make repository scope explicit; validate schema; preserve existing machine-local config behavior; show a useful diff; fail clearly outside a repository or for unsupported settings. Migrate .github/base-review-policy.yml with a compatibility period and do not remove its reader before the replacement is released and documented.

Non-goals: Do not silently expand scope, activate unreviewed policy, mirror issue fields onto PRs, grant agents merge/release authority, or make changes outside the named affected areas. Any new product decision or materially new work gets a separate issue and decision record.

Affected areas

Impact and evidence

  1. Product intent: Implements only the accepted governance design and plan; any product-requirement change must be filed separately.
  2. Architecture and contracts: Destination is the package-specific section of the merged governance design/implementation plan plus the affected canonical contract named above.
  3. User guidance: The issue identifies likely guidance paths; the implementation PR must name updated user/FAQ/README paths or give a change-specific reason why none is affected.
  4. CLI/API and reference: The affected-area list determines whether CLI/API/reference docs change; the implementation PR must cite the exact reference path or justify no impact.
  5. Operations and safety: No privileged automation or merge authority is implied; the PR must list operational/security effects and any rollback.
  6. Validation and testing: The issue lists the planned tests; the PR must report executed validation and explain any unavailable test.
  7. Examples and downstream use: The implementation PR must identify affected examples/consumers or give evidence that this change has no downstream surface.
  8. Governance and contributor process: This package changes or preserves the contributor/governance contract as described in Scope; links must point to the canonical rules.
  9. Decision records: No new decision is accepted by this issue; any durable deviation requires a proposed decision record and explicit maintainer acceptance.
  10. Release notes: The PR must include a user-facing release-note line or a reasoned none; this issue does not pre-decide that disposition.

These are issue-stage dispositions to refine during Triage. Before Ready, every category must have its exact destination or evidence-based no-impact reason; the PR repeats the ten-category evidence for actual changes.

Open questions

  • None known. If implementation exposes an unresolved contract, return this issue to Triage and record the decision before implementation continues.

Plan

  • S1: One focused PR for this issue. Use Fixes #N only if no additional slice is needed; if the maintainer approves multiple PRs, name each S1…Sn here before the first is opened and use Part of #N.
  • Dependencies: Publish and test the governance-aware base manifest schema #1613
  • Acceptance criteria:
  • The command reads and updates only the selected repository manifest and validates all accepted governance keys against Publish and test the governance-aware base manifest schema #1613's schema.
  • Issue and PR loop limits are independent, default to three, and reject values outside documented bounds.
  • Dry-run/diff output is reviewable; failed validation leaves the manifest unchanged.
  • Machine-local config remains intact; non-repository and unsupported-key errors are actionable.
  • The old review-policy reader remains compatible until a separate documented migration gate is met.
  • Validation:
  • Add command tests for repository detection, valid/invalid config, independent loop limits, dry-run/diff, write preservation and machine-local compatibility.
  • Add manifest-schema contract coverage and CLI help/reference checks.
  • Run focused basectl config tests and git diff --check.
  • Risks and rollback: A repository-scoped write could target the wrong checkout; require explicit root resolution and atomic writes. Roll back by reverting the CLI/schema PR while retaining the compatibility reader.
  • Decision impact: No decision is accepted merely by implementing the issue. Record the relevant accepted decision/ADR and file a superseding record if the maintainer approves a change.

Activity

  1. self-assigned this
    on Nov 10, 2026
  2. moved this from Backlog to Triage in baseon Nov 10, 2026
  3. added this to the v1.11.0 milestone on Nov 11, 2026
  4. moved this from Triage to Backlog in baseon Nov 11, 2026
  5. codeforester commented on Nov 11, 2026

    @codeforester
    CollaboratorAuthor

    Pre-Triage review against the accepted plan (#2664, tracker #2665)

    1. The Publish and test the governance-aware base manifest schema #1613 dependency doesn't hold up. Publish and test the governance-aware base manifest schema #1613's rewritten body says to "extend the formal JSON Schema for base_manifest.yaml", but no such schema exists. There is only the runtime cli/python/base_setup/manifest_schema.py; docs/schemas/ holds only workspace-manifest.json and release-bom.schema.json. Publish and test the governance-aware base manifest schema #1613's original full-schema scope is still a prerequisite of feat: basectl mcp serve (stdio) with deterministic lookup tools #2587 and feat(manifest): docs block and repo configure --ai writes the project MCP config #2590 and is part of the #2555 crosswalk. Decide between two options:
    2. Path and current behavior. The command lives in cli/bash/commands/basectl/subcommands/config.sh, not cli/bash/commands/basectl/config. Today basectl config has only path, show and doctor. It is machine-local, and its help says "Base does not edit or sync this file". A repository-scoped write is a new write path in that command group, so name the subcommand and update that help text.
    3. Review-policy reader. The reader for .github/base-review-policy.yml is repo_github_settings.sh:91. Base itself has no such file. Name the reader in Affected areas, since it is what the compatibility period protects.
    4. Open questions. "None" isn't true here: plan §3.1 says "Bounds and exact CLI syntax are fixed in the config issue". The open items are:
      • the bounds for both loop limits;
      • the range for Ready freshness;
      • the exact CLI syntax;
      • where the ecosystem and consumer defaults come from (different-tool versus fresh-session).
    5. If the crosswalk moves the manifest agent: block (the original Design opt-in governance defaults for Base-supported projects #2584) under governance:, it lands in this schema. Keep the key layout extensible.

    Contract text. The Impact, Scope and Open questions sections are still the shared template text. The Impact section is identical in 24 of #2666–#2690, and Scope repeats Expected behavior. That's fine in Backlog. Before Ready, replace each with this issue's own dispositions. Likely impacts here: category 4 (docs/command-reference.md, config help) and category 7 (the manifest examples in the demo repos).

    Claude Code (Opus 5.5), reviewing from Ramesh's account at his request. This review comes before Triage, so it is not an issue-loop round.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or product improvement

Type

Projects

  • Status
    Backlog

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions