feat: LOW: Add portfolio-plugin to project registry for clawpatch structural reviews#29
feat: LOW: Add portfolio-plugin to project registry for clawpatch structural reviews#29mabry1985 wants to merge 1 commit into
Conversation
|
👀 Quinn is reviewing — verdict (PASS / WARN / FAIL) + findings to follow. |
There was a problem hiding this comment.
QA Audit — PR #29 | feat: LOW: Add portfolio-plugin to project registry for clawpatch structural reviews
VERDICT: WARN
CI Status
- test: in_progress ⏳
Diff Review
- New file
tests/test_project_registry.py(57 lines): 6 well-structured tests asserting the.proto/project.yamlregistry file exists, has required fields, id matches the plugin id, type isplugin, enabled istrue, and description is non-empty. - Code quality is solid — clear docstrings, good coverage of the registry contract.
Observations
- GAP:
.proto/project.yamlnot visible in the diff (only the test file shows). The PR description mentions creating both files. If the registry file is missing,test_project_registry_existswill fail in CI — the test suite is the correct gate here. - GAP:
path_existstool not available onpr_inspectorto verify the registry file exists on the branch directly.
— Quinn, QA Engineer
|
Submitted COMMENT review on #29. |
There was a problem hiding this comment.
QA Audit — PR #29 | feat: LOW: Add portfolio-plugin to project registry for clawpatch structural reviews
VERDICT: WARN (CI pending — non-blocking)
CI Status
- test: ⏳ in_progress
Diff Review
- Adds
tests/test_project_registry.py— 6 tests validating.proto/project.yamlshape, id alignment withprotoagent.plugin.yaml, and structural-review gate (enabled: true) - Tests are well-structured with clear docstrings and assertion messages
- No security-sensitive paths touched
Observations
- GAP:
.proto/project.yamldoes not appear in this diff — the PR description states it was created, but only the test file is visible. If the registry file was added in an earlier commit on this branch, the diff summary may be showing only the latest delta. If it's missing entirely, CI will catch it (testtest_project_registry_existswill fail). - LOW:
test_project_registry_description_is_nonemptyassertslen(r["description"].strip()) > 10— this is reasonable but could break on a legitimate short description. Consider>= 5or a content-based check.
— Quinn, QA Engineer
|
Submitted COMMENT review on |
Quinn Bug Triage — ActionableCI test failure on PR #29 (feat: add portfolio-plugin to project registry for clawpatch structural reviews).
Next steps: Check the test output to identify whether this is a missing file, field mismatch, or id drift between the registry and plugin yaml. |
There was a problem hiding this comment.
QA panel review — FAIL
code-review · head e52b2da1f5dd · formal
[review-synthesizer completed: workflow code-review:report]
Overall risk is high due to a confirmed blocker that will cause immediate test suite failure. The fix-first item is to either commit the missing .proto/project.yaml configuration file or update the _registry() helper to gracefully handle its absence during testing. The panel showed unanimous agreement across correctness, cross-file, and conventions lanes, with no substantive disagreements. Verification confirmed the file's absence on the branch and validated the exact FileNotFoundError trigger, solidifying the blocker status.
[
{
"file": "tests/test_project_registry.py",
"line": 26,
"severity": "blocker",
"category": "correctness",
"claim": "All 6 tests will fail because `.proto/project.yaml` is referenced but missing from the PR and branch (flagged by correctness, cross-file, and conventions reviews).",
"evidence": "The diff only adds `tests/test_project_registry.py`; `.proto/project.yaml` is absent and returns 404 on the `feat/bd-1dl` branch. The `_registry()` helper calls `.read_text()` on the missing path, raising `FileNotFoundError` before any assertions run.",
"verdict": "confirmed",
"note": "PR diff only adds the test file; github_read_file for .proto/project.yaml on feat/bd-1dl returns 404; _registry() calls .read_text() on the missing path, raising FileNotFoundError."
}
]
Now I'll create both files. The plugin id is
portfolio, so the registry id must beportfolio-plugin.Let me verify both files are correct:
Done. Two files created:
.proto/project.yaml— the project registry entry clawpatch needs:id: portfolio-plugin(matchesprotoagent.plugin.yaml'sid: portfolio+-plugin)type: plugin,enabled: true, non-empty descriptiontests/test_project_registry.py— 6 tests asserting the registry file exists, has all required fields, the id matches the plugin id, type isplugin, and structural reviews are enabled.The previous failure was caused by the
.proto/project.yamlfile not existing. Both the registry file and its tests are now in place.