docs+tests: post-#2152 doc-sweep + security-criteria section-4 pin - #2161
Conversation
PR #2152 deferred two non-blocking items (see #2152 (comment)): - docs/guides/agent-teams.md still described the pre-#2139 implement-phase topology (3 reviewers, 5 edges). Update the prose, the review-adjacency table, and the edge-count line to match the current 6-reviewer / 11-edge graph in orchestrator/review_graph.py::get_default_implement_graph (10 CRITICAL + 1 ADVISORY). - orchestrator/tests/test_lens_reviewer_prompts.py pinned TASK-2-1's cross-file/handler markers but not section 4 of the security criteria (the PR #1964 jira-wrapper Dockerfile/symlink-mismatch pattern). Add a one-line dockerfile-symlink assertion so a future edit can't silently drop the lens.
There was a problem hiding this comment.
Verified the doc against orchestrator/review_graph.py::get_default_implement_graph and the test against the on-disk file. Doc + test changes are correct and the test passes (3/3 in TestSecurityCriteriaLoader).
Verification
- Edge count: counted 11
ReviewEdgeconstructions inorchestrator/review_graph.py:237-262. 10 CRITICAL + 1 ADVISORY (thereviewer_code → documenteredge). Matches the new line. - Reviewer roster: the 6 reviewers in the adjacency table (
reviewer_code,reviewer_code_holistic,reviewer_contract,reviewer_security,reviewer_concurrency, plustesteras dual-role) match the docstring atorchestrator/review_graph.py:233-235. - Section-4 pin:
shared/prompts/security-review-criteria.md:74has### 4. Uncommitted-artifact / Dockerfile-symlink mismatches. Lowercased → matches"dockerfile-symlink". The inline fallback inorchestrator/routes/pipelines.py:3494also contains the slug, so both code paths satisfy the assertion if the loader ever flips.
Non-blocking
-
agent-teams.mdline 76 — "~30 for full N=6 pairwise" is mathematically off. Pre-#2152 the comparison was "~20 for full N=5" because there were 5 distinct agents in the implement phase (coder, tester, documenter, reviewer_code, reviewer_contract →5 × 4 = 20). Post-#2139 the implement phase has 8 distinct agents (addedreviewer_code_holistic,reviewer_security,reviewer_concurrency), so a true pairwise-with-self-excluded count would be8 × 7 = 56, not~30.N=6only works if you count reviewer slots (5 dedicated + tester dual-role) and ignore the producer side, which breaks parity with how the original sentence usedN. Either adjust to~56 for full N=8 pairwise reviewor restate the convention. The order-of-magnitude point ("asymmetric saves edges") still lands either way — flagging as suggestion, not blocker. -
Inline-fallback parity: the new
dockerfile-symlinkassertion only guards the on-disk-file path (test_loads_from_shared_file). The inline fallback in_get_security_review_criteria(orchestrator/routes/pipelines.py:3493-3495) also names the pattern. If the goal is "a future edit can't silently drop the lens", the same slug assertion belongs intest_inline_fallback_when_shared_file_missingtoo — otherwise someone who deletes the shared file and edits the fallback can drop section 4 from the fallback path silently. Optional defense-in-depth, not blocking.
— Authored by egg
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
…arity Two non-blocking suggestions from #2161 review: - agent-teams.md: 'N=6 pairwise / ~30' was mathematically off. The default implement phase has 8 distinct agents (3 producers + 6 reviewers, with tester counted once for its dual role), so the pairwise upper bound is 8x7=56, not ~30. Restated to 'N=8 / ~56' with an inline note clarifying how N is counted. - test_lens_reviewer_prompts.py: the 'dockerfile-symlink' assertion only guarded test_loads_from_shared_file. The inline fallback in _get_security_review_criteria also names the pattern, so a parallel edit could silently drop section 4 from the fallback path. Added the same slug assertion to test_inline_fallback_when_shared_file_missing so both code paths are pinned.
There was a problem hiding this comment.
Agreed on both points. Pushed in d153144.
- Pairwise math fix. Restated the line as "~56 for full N=8 pairwise review (3 producers + 6 reviewers, with tester counted once for its dual role)". 8×7=56 matches the post-#2139 distinct-agent count.
- Inline-fallback parity. Added
assert "dockerfile-symlink" in content.lower()totest_inline_fallback_when_shared_file_missingso a parallel edit to the shared file and the inline fallback inorchestrator/routes/pipelines.py:3493-3495can't silently drop section 4 from the fallback path.
pytest orchestrator/tests/test_lens_reviewer_prompts.py -v → 32/32 passing. ruff check clean.
— Authored by egg
There was a problem hiding this comment.
Both non-blocking suggestions from the previous review are addressed correctly. No new issues in the delta.
Verification
- Pairwise math (
docs/guides/agent-teams.md:76): Restated to "~56 for full N=8 pairwise review (3 producers + 6 reviewers, with tester counted once for its dual role)". Counted 8 distinct agents inorchestrator/review_graph.py::get_default_implement_graph(coder, tester, documenter, reviewer_code, reviewer_code_holistic, reviewer_contract, reviewer_security, reviewer_concurrency) → 8×7=56 ✓. The parenthetical accurately explains the count and matches the docstring atorchestrator/review_graph.py:233-235. - Inline-fallback parity (
orchestrator/tests/test_lens_reviewer_prompts.py:78): Newassert "dockerfile-symlink" in content.lower()intest_inline_fallback_when_shared_file_missing. Verified the inline fallback atorchestrator/routes/pipelines.py:3494contains"- Uncommitted-artifact / Dockerfile-symlink mismatches (the PR ", so the assertion is a real guard against silent removal of section 4 from the fallback path, not a tautology. - Tests:
pytest orchestrator/tests/test_lens_reviewer_prompts.py -v→ 32/32 passing locally.
No blocking issues. LGTM.
— Authored by egg
|
egg review completed. View run logs 2 previous review(s) hidden. |
…2161) * docs+tests: post-#2152 doc-sweep + security-criteria section-4 pin PR #2152 deferred two non-blocking items (see #2152 (comment)): - docs/guides/agent-teams.md still described the pre-#2139 implement-phase topology (3 reviewers, 5 edges). Update the prose, the review-adjacency table, and the edge-count line to match the current 6-reviewer / 11-edge graph in orchestrator/review_graph.py::get_default_implement_graph (10 CRITICAL + 1 ADVISORY). - orchestrator/tests/test_lens_reviewer_prompts.py pinned TASK-2-1's cross-file/handler markers but not section 4 of the security criteria (the PR #1964 jira-wrapper Dockerfile/symlink-mismatch pattern). Add a one-line dockerfile-symlink assertion so a future edit can't silently drop the lens. * Address review: fix N=8 pairwise math + dockerfile-symlink fallback parity Two non-blocking suggestions from #2161 review: - agent-teams.md: 'N=6 pairwise / ~30' was mathematically off. The default implement phase has 8 distinct agents (3 producers + 6 reviewers, with tester counted once for its dual role), so the pairwise upper bound is 8x7=56, not ~30. Restated to 'N=8 / ~56' with an inline note clarifying how N is counted. - test_lens_reviewer_prompts.py: the 'dockerfile-symlink' assertion only guarded test_loads_from_shared_file. The inline fallback in _get_security_review_criteria also names the pattern, so a parallel edit could silently drop section 4 from the fallback path. Added the same slug assertion to test_inline_fallback_when_shared_file_missing so both code paths are pinned. --------- Co-authored-by: egg-reviewer[bot] <261018737+egg-reviewer[bot]@users.noreply.github.com>
Summary
Two non-blocking items deferred from PR #2152 (see comment 4330049669).
docs/guides/agent-teams.mdedge count drift. The doc still described the pre-Reviewer roster reshape: remove subagent fan-out, promote lens reviewers to CRITICAL #2139 implement-phase topology (3 reviewers, 5 edges). Updated the producer/reviewer prose, the review-adjacency table, and the edge-count line to match the current 6-reviewer / 11-edge graph inorchestrator/review_graph.py::get_default_implement_graph(10 CRITICAL + 1 ADVISORY).security-review-criteria.mdsection-4 test pin.orchestrator/tests/test_lens_reviewer_prompts.py::TestSecurityCriteriaLoader::test_loads_from_shared_filealready pinned TASK-2-1'scross-file allowlist mismatchandhandler-vs-validator path mismatchmarkers, but not section 4 (the PR Add Jira gateway wrapper with credential injection (v1 read-only) #1964 jira-wrapperDockerfile/symlink-mismatch pattern). Added a one-linedockerfile-symlinkassertion so a future edit can't silently drop the lens.Doc + test only — no production code changes.
Test plan
pytest orchestrator/tests/test_lens_reviewer_prompts.py -v(32 passed)ruff checkon changed files (passed)orchestrator/review_graph.py::get_default_implement_graphconfirms the new table row count (6 reviewers) matches the 11 edges defined there