feat: flavor-correct rmgr scaffold; record C-15/C-23 file-wins

RMGR-WP-0004-T03: project repos get GOAL.md and a required prefix.
RMGR-WP-0005-T06 implemented in state-hub consistency.
This commit is contained in:
tegwick 2026-08-18 13:36:26 +02:00
parent 0c5177ec4c
commit a6d4a9b615
6 changed files with 294 additions and 3 deletions

View file

@ -75,6 +75,15 @@ def main(argv: list[str] | None = None) -> int:
p_pref.add_argument("--root", default=".", help="Fleet root or a single repository")
p_pref.add_argument("--registry", default=None, help="Override prefix registry YAML")
p_scaf = sub.add_parser("scaffold", help="Create flavor-correct repository baseline files")
p_scaf.add_argument("--path", required=True)
p_scaf.add_argument("--flavor", required=True, choices=["experimental", "research", "project", "tooling", "product", "business"])
p_scaf.add_argument("--slug", default=None)
p_scaf.add_argument("--domain", default="infotech")
p_scaf.add_argument("--wp-prefix", default=None)
p_scaf.add_argument("--force", action="store_true")
p_scaf.add_argument("--no-commit", action="store_true")
args = parser.parse_args(argv)
if args.version or args.command in (None, "version"):
@ -214,6 +223,21 @@ def main(argv: list[str] | None = None) -> int:
print(json.dumps(report, indent=2))
return 0 if report.get("ok") else 1
if args.command == "scaffold":
from repo_manager.commands.scaffold import scaffold_repository
result = scaffold_repository(
Path(args.path),
flavor=args.flavor,
slug=args.slug,
domain=args.domain,
wp_prefix=args.wp_prefix,
force=args.force,
commit=not args.no_commit,
)
print(json.dumps(result.to_dict(), indent=2))
return 0 if result.status == "applied" else 1
parser.print_help()
return 0