Skip to content

docs+tests: post-#2152 doc-sweep + security-criteria section-4 pin - #2161

Merged
jwbron merged 2 commits into
mainfrom
egg/post-2152-followups
Apr 27, 2026
Merged

docs+tests: post-#2152 doc-sweep + security-criteria section-4 pin#2161
jwbron merged 2 commits into
mainfrom
egg/post-2152-followups

Conversation

@jwbron

@jwbron jwbron commented Apr 27, 2026

Copy link
Copy Markdown
Owner

Summary

Two non-blocking items deferred from PR #2152 (see comment 4330049669).

  • docs/guides/agent-teams.md edge 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 in orchestrator/review_graph.py::get_default_implement_graph (10 CRITICAL + 1 ADVISORY).
  • security-review-criteria.md section-4 test pin. orchestrator/tests/test_lens_reviewer_prompts.py::TestSecurityCriteriaLoader::test_loads_from_shared_file already pinned TASK-2-1's cross-file allowlist mismatch and handler-vs-validator path mismatch markers, but not section 4 (the PR Add Jira gateway wrapper with credential injection (v1 read-only) #1964 jira-wrapper Dockerfile/symlink-mismatch pattern). Added a one-line dockerfile-symlink assertion 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 check on changed files (passed)
  • Visual diff against orchestrator/review_graph.py::get_default_implement_graph confirms the new table row count (6 reviewers) matches the 11 edges defined there

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.

@egg-reviewer egg-reviewer Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 ReviewEdge constructions in orchestrator/review_graph.py:237-262. 10 CRITICAL + 1 ADVISORY (the reviewer_code → documenter edge). Matches the new line.
  • Reviewer roster: the 6 reviewers in the adjacency table (reviewer_code, reviewer_code_holistic, reviewer_contract, reviewer_security, reviewer_concurrency, plus tester as dual-role) match the docstring at orchestrator/review_graph.py:233-235.
  • Section-4 pin: shared/prompts/security-review-criteria.md:74 has ### 4. Uncommitted-artifact / Dockerfile-symlink mismatches. Lowercased → matches "dockerfile-symlink". The inline fallback in orchestrator/routes/pipelines.py:3494 also contains the slug, so both code paths satisfy the assertion if the loader ever flips.

Non-blocking

  • agent-teams.md line 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 (added reviewer_code_holistic, reviewer_security, reviewer_concurrency), so a true pairwise-with-self-excluded count would be 8 × 7 = 56, not ~30. N=6 only works if you count reviewer slots (5 dedicated + tester dual-role) and ignore the producer side, which breaks parity with how the original sentence used N. Either adjust to ~56 for full N=8 pairwise review or 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-symlink assertion 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 in test_inline_fallback_when_shared_file_missing too — 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

@james-in-a-box

This comment has been minimized.

@james-in-a-box

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.

@james-in-a-box james-in-a-box Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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() to test_inline_fallback_when_shared_file_missing so a parallel edit to the shared file and the inline fallback in orchestrator/routes/pipelines.py:3493-3495 can'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

@egg-reviewer egg-reviewer Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 in orchestrator/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 at orchestrator/review_graph.py:233-235.
  • Inline-fallback parity (orchestrator/tests/test_lens_reviewer_prompts.py:78): New assert "dockerfile-symlink" in content.lower() in test_inline_fallback_when_shared_file_missing. Verified the inline fallback at orchestrator/routes/pipelines.py:3494 contains "- 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

@james-in-a-box

Copy link
Copy Markdown
Contributor

egg review completed. View run logs

2 previous review(s) hidden.

@jwbron
jwbron merged commit d6dac4a into main Apr 27, 2026
25 checks passed
james-in-a-box Bot pushed a commit that referenced this pull request Apr 28, 2026
…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant