Evolve the MVP project registry (#427) into a versioned, fail-closed project registry API for the console (Phase 1, read-only). - Add schema version 2 with project `status`, per-step onboarding `state`/`required`, optional redacted `last_seen_health`, and `remote_name`. Version 1 files stay loadable and are normalized with explicit defaults. - Serve `/api/v1/projects` and `/api/v1/projects/{project_id}` with API provenance (`api_version`, `schema_version`, `source`). `/api/projects` is retained as an unversioned Phase 1 alias. - Replace bare `ValueError` with `RegistryError`, carrying an operator `remediation` and `field_path`; invalid registries fail closed as a 500 JSON payload or a dedicated HTML error page instead of a traceback. - Reject credential-shaped keys before any DTO is built, reusing `registry_safety.is_forbidden_key` as the single source of truth shared with the worker registry (#798). - Render HTML views from `project_to_dict`, so the console and the JSON API cannot disagree about status or onboarding progress. - Document the contract in docs/webui-project-registry-api.md. Tests: registry load/validate (valid, missing project, schema validation, credential rejection) and API route coverage. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
60 lines
2.2 KiB
JSON
60 lines
2.2 KiB
JSON
{
|
|
"version": 2,
|
|
"projects": [
|
|
{
|
|
"id": "gitea-tools",
|
|
"repo_name": "Gitea-Tools",
|
|
"gitea_owner": "Scaled-Tech-Consulting",
|
|
"remote_name": "prgs",
|
|
"remote_host": "https://gitea.prgs.cc",
|
|
"default_branch": "master",
|
|
"local_checkout_path": ".",
|
|
"status": "active",
|
|
"profiles": {
|
|
"author": "prgs-author",
|
|
"reviewer": "prgs-reviewer",
|
|
"reconciler": "prgs-reconciler"
|
|
},
|
|
"workflow_paths": {
|
|
"skill": "skills/llm-project-workflow/SKILL.md",
|
|
"work_issue": "skills/llm-project-workflow/workflows/work-issue.md",
|
|
"review_merge": "skills/llm-project-workflow/workflows/review-merge-pr.md"
|
|
},
|
|
"schema_paths": {
|
|
"mcp_config_v2": "gitea-mcp.v2-contexts.example.json",
|
|
"mcp_config_v1": "gitea-mcp.example.json"
|
|
},
|
|
"onboarding_checklist": [
|
|
{
|
|
"id": "profiles",
|
|
"title": "Configure execution profiles",
|
|
"description": "Install author, reviewer, and reconciler MCP profiles (prgs-author, prgs-reviewer, prgs-reconciler) in separate namespaces. Tokens stay in keychain — never in this registry.",
|
|
"state": "complete",
|
|
"required": true
|
|
},
|
|
{
|
|
"id": "mcp_config",
|
|
"title": "Wire MCP v2 contexts",
|
|
"description": "Copy and customize gitea-mcp.v2-contexts.example.json for your machine. Map this repo path under projects with default_owner Scaled-Tech-Consulting and default_repo Gitea-Tools.",
|
|
"state": "complete",
|
|
"required": true
|
|
},
|
|
{
|
|
"id": "wiki_gate",
|
|
"title": "Wiki publication readiness",
|
|
"description": "For wiki-tracked work, satisfy the live Gitea Wiki proof gate (#224) before closing issues. See docs/wiki/Safety-and-Gates.md.",
|
|
"state": "complete",
|
|
"required": true
|
|
},
|
|
{
|
|
"id": "branches_layout",
|
|
"title": "Isolate work under branches/",
|
|
"description": "All LLM task edits happen in worktrees under branches/. Main checkout stays clean; use skills/llm-project-workflow templates for start-issue and review flows.",
|
|
"state": "complete",
|
|
"required": true
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|