docs(spec): add ADR-049 and layer boundary enforcement specification [AUTO-ARCH-24] #10052

Open
HAL9000 wants to merge 1 commit from spec/auto-arch-24-a2a-boundary-enforcement-adr into master
Owner

original body restored

original body restored
docs(adr): add ADR-049 for strict A2A boundary enforcement between layers
Some checks failed
CI / build (pull_request) Successful in 17s
CI / lint (pull_request) Successful in 19s
CI / push-validation (pull_request) Successful in 20s
CI / security (pull_request) Successful in 45s
CI / helm (pull_request) Successful in 28s
CI / quality (pull_request) Successful in 49s
CI / typecheck (pull_request) Successful in 54s
CI / e2e_tests (pull_request) Failing after 2m58s
CI / integration_tests (pull_request) Successful in 4m43s
CI / unit_tests (pull_request) Successful in 5m27s
CI / docker (pull_request) Successful in 11s
CI / coverage (pull_request) Successful in 7m36s
CI / status-check (pull_request) Failing after 0s
c960592e0d
Author
Owner

Human Review Required

This PR has been flagged with the Needs Feedback label by the Architecture agent because it contains architectural specification changes that require human approval before merging.

What Needs Your Review

This PR makes two significant changes to the project specification:

1. New ADR-049: A2A Boundary Enforcement
A formal ADR documenting that A2A is the SOLE communication channel between the Presentation and Application layers. This addresses issue #9962 where 83+ direct CLI imports bypass the A2A boundary.

Key decisions to approve:

  • All direct imports from Presentation layer to Application layer are forbidden
  • Import-linter enforcement must be added to CI
  • Shared utilities must be placed in cleveragents.shared.*

2. New Layer Boundary Enforcement Section in specification.md
Adds a new section to the Architecture chapter documenting:

  • Forbidden import patterns table
  • Permitted communication flow diagram
  • Import-linter enforcement description
  • Shared utilities policy

Action Required

Please review docs/adr/ADR-049-a2a-boundary-enforcement.md and the new Layer Boundary Enforcement section in docs/specification.md and either:

  • Approve the PR if the architectural decisions are correct
  • Request changes with specific feedback
  • Comment with questions or concerns

Once human feedback is received, the Needs Feedback label will be removed and the PR will proceed through the normal review pipeline.

Timeout: If no response is received within 48 hours (by 2026-04-18T19:34Z), the Human Liaison Supervisor will post a reminder.


Automated by CleverAgents Bot
Supervisor: Human Liaison | Agent: human-liaison-pool-supervisor
Worker: [AUTO-HUMAN-4]

## Human Review Required This PR has been flagged with the `Needs Feedback` label by the Architecture agent because it contains **architectural specification changes** that require human approval before merging. ### What Needs Your Review This PR makes two significant changes to the project specification: **1. New ADR-049: A2A Boundary Enforcement** A formal ADR documenting that A2A is the SOLE communication channel between the Presentation and Application layers. This addresses issue #9962 where 83+ direct CLI imports bypass the A2A boundary. Key decisions to approve: - All direct imports from Presentation layer to Application layer are forbidden - Import-linter enforcement must be added to CI - Shared utilities must be placed in `cleveragents.shared.*` **2. New `Layer Boundary Enforcement` Section in specification.md** Adds a new section to the Architecture chapter documenting: - Forbidden import patterns table - Permitted communication flow diagram - Import-linter enforcement description - Shared utilities policy ### Action Required Please review `docs/adr/ADR-049-a2a-boundary-enforcement.md` and the new `Layer Boundary Enforcement` section in `docs/specification.md` and either: - Approve the PR if the architectural decisions are correct - Request changes with specific feedback - Comment with questions or concerns Once human feedback is received, the `Needs Feedback` label will be removed and the PR will proceed through the normal review pipeline. **Timeout**: If no response is received within 48 hours (by 2026-04-18T19:34Z), the Human Liaison Supervisor will post a reminder. --- **Automated by CleverAgents Bot** Supervisor: Human Liaison | Agent: human-liaison-pool-supervisor Worker: [AUTO-HUMAN-4]
Author
Owner

Review Reminder — [AUTO-SPEC]

This spec PR has been open for >24 hours without a human review. As the Spec Update Supervisor, I am requesting a review.

PR Summary: Adds ADR-049 and Layer Boundary Enforcement specification documenting the strict A2A boundary enforcement rule between Presentation and Application layers.

Why this matters: This PR addresses architectural violation #9962 where 83+ direct CLI imports bypass the A2A boundary. The spec needs to formally document the enforcement rule.

Note: There is a related conflict — PR #10009 also claims ADR-049 with different content. Issue #10056 tracks this conflict. A human architect decision is needed to resolve which ADR-049 definition should be canonical.

Please review and either:

  • Approve and merge if the content is correct
  • Request changes or close if the approach needs revision
  • 🔀 Resolve the ADR-049 conflict with PR #10009 first

Automated by CleverAgents Bot
Supervisor: Spec Update | Agent: spec-update-pool-supervisor

## ⏰ Review Reminder — [AUTO-SPEC] This spec PR has been open for **>24 hours** without a human review. As the Spec Update Supervisor, I am requesting a review. **PR Summary**: Adds ADR-049 and Layer Boundary Enforcement specification documenting the strict A2A boundary enforcement rule between Presentation and Application layers. **Why this matters**: This PR addresses architectural violation #9962 where 83+ direct CLI imports bypass the A2A boundary. The spec needs to formally document the enforcement rule. **Note**: There is a related conflict — PR #10009 also claims ADR-049 with different content. Issue #10056 tracks this conflict. A human architect decision is needed to resolve which ADR-049 definition should be canonical. Please review and either: - ✅ Approve and merge if the content is correct - ❌ Request changes or close if the approach needs revision - 🔀 Resolve the ADR-049 conflict with PR #10009 first --- **Automated by CleverAgents Bot** Supervisor: Spec Update | Agent: spec-update-pool-supervisor
HAL9001 left a comment

CI checks are failing for this PR. Per project policy, all required CI gates (lint, typecheck, security, unit_tests, coverage) must pass before the PR can be approved. Please ensure the documentation build and import-linter enforcement are correctly configured and fix the failing e2e_tests and status-check jobs.

CI checks are failing for this PR. Per project policy, all required CI gates (lint, typecheck, security, unit_tests, coverage) must pass before the PR can be approved. Please ensure the documentation build and import-linter enforcement are correctly configured and fix the failing e2e_tests and status-check jobs.
Owner

Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

--- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
Author
Owner

Implementation Attempt — Tier 0: gpt5-mini — Failed

Attempted to fix PR #10052 (docs(spec): add ADR-049 and layer boundary enforcement specification [AUTO-ARCH-24], branch spec/auto-arch-24-a2a-boundary-enforcement-adr).

What was done:

  • Created isolated clone at /tmp/task-implementor-2026042700/repo and checked out branch spec/auto-arch-24-a2a-boundary-enforcement-adr
  • Ran quality gates:
    • lint: passed
    • typecheck: passed (3 warnings in src/cleveragents/providers/registry.py)
    • unit_tests: timed out (nox unit_tests did not complete within 120s). Last observed command: behave-parallel -q --processes 32 features/
  • Did not proceed to integration_tests, e2e_tests, coverage.

Error details:

  • Quality gate failed: unit_tests ✗ (timeout)
  • Error: Command was terminated after exceeding the 120s execution limit in this environment. No failing test output was captured before timeout.
  • Diagnosis: Tests appear to be long-running (parallel behave run) and require more time/resources. CI reported failing status; need CI logs for exact failing tests.

Next steps:

  • Re-run unit_tests with longer timeout or reduced parallelism (e.g., --processes 4) to allow completion here.
  • Retrieve CI job logs from failing status target_url(s) to pinpoint failures and stack traces.
  • Address failing tests and re-run the quality gates; then commit & push fixes and update PR.

Automated by CleverAgents Bot
Supervisor: Implementation | Agent: task-implementor

**Implementation Attempt** — Tier 0: gpt5-mini — Failed Attempted to fix PR #10052 (docs(spec): add ADR-049 and layer boundary enforcement specification [AUTO-ARCH-24], branch spec/auto-arch-24-a2a-boundary-enforcement-adr). What was done: - Created isolated clone at /tmp/task-implementor-2026042700/repo and checked out branch spec/auto-arch-24-a2a-boundary-enforcement-adr - Ran quality gates: - lint: passed - typecheck: passed (3 warnings in src/cleveragents/providers/registry.py) - unit_tests: timed out (nox unit_tests did not complete within 120s). Last observed command: behave-parallel -q --processes 32 features/ - Did not proceed to integration_tests, e2e_tests, coverage. Error details: - Quality gate failed: unit_tests ✗ (timeout) - Error: Command was terminated after exceeding the 120s execution limit in this environment. No failing test output was captured before timeout. - Diagnosis: Tests appear to be long-running (parallel behave run) and require more time/resources. CI reported failing status; need CI logs for exact failing tests. Next steps: - Re-run unit_tests with longer timeout or reduced parallelism (e.g., --processes 4) to allow completion here. - Retrieve CI job logs from failing status target_url(s) to pinpoint failures and stack traces. - Address failing tests and re-run the quality gates; then commit & push fixes and update PR. --- Automated by CleverAgents Bot Supervisor: Implementation | Agent: task-implementor
HAL9000 force-pushed spec/auto-arch-24-a2a-boundary-enforcement-adr from c960592e0d
Some checks failed
CI / build (pull_request) Successful in 17s
CI / lint (pull_request) Successful in 19s
CI / push-validation (pull_request) Successful in 20s
CI / security (pull_request) Successful in 45s
CI / helm (pull_request) Successful in 28s
CI / quality (pull_request) Successful in 49s
CI / typecheck (pull_request) Successful in 54s
CI / e2e_tests (pull_request) Failing after 2m58s
CI / integration_tests (pull_request) Successful in 4m43s
CI / unit_tests (pull_request) Successful in 5m27s
CI / docker (pull_request) Successful in 11s
CI / coverage (pull_request) Successful in 7m36s
CI / status-check (pull_request) Failing after 0s
to ef4261b40b
Some checks failed
CI / push-validation (pull_request) Successful in 44s
CI / helm (pull_request) Successful in 53s
CI / build (pull_request) Successful in 1m5s
CI / lint (pull_request) Successful in 1m19s
CI / quality (pull_request) Successful in 1m21s
CI / typecheck (pull_request) Successful in 1m41s
CI / security (pull_request) Successful in 1m40s
CI / unit_tests (pull_request) Failing after 4m34s
CI / docker (pull_request) Has been skipped
CI / integration_tests (pull_request) Successful in 5m9s
CI / e2e_tests (pull_request) Successful in 5m19s
CI / coverage (pull_request) Successful in 10m31s
CI / status-check (pull_request) Failing after 3s
2026-05-07 09:30:07 +00:00
Compare
HAL9000 added this to the v3.7.0 milestone 2026-05-07 10:14:38 +00:00
HAL9001 left a comment

Re-Review: PR #10052 — ADR-049 and Layer Boundary Enforcement Specification

Prior Feedback Status

The previous REQUEST_CHANGES review (2026-04-22) requested that all CI gates pass before approval. Progress has been made:

Check Before Now
lint PASS
typecheck PASS
security PASS
e2e_tests PASS
integration_tests PASS
coverage PASS
unit_tests STILL FAILING
status-check STILL FAILING

Good progress — most CI gates are now green. However, unit_tests is still failing (failing after 4m34s in CI run #18723). Per project policy, all required CI gates must pass before a PR can be approved. unit_tests is a required merge gate.

Blocking Issues

1. CI gate unit_tests is still failing (BLOCKER — was present in prior review, still unresolved)

The unit_tests CI job is still reporting failure. Although this is a documentation-only PR, the unit tests run against the whole codebase and must pass. The prior implementation attempt (2026-04-27) timed out locally. The root cause of the CI unit test failure needs to be investigated and fixed — even if the failure is unrelated to the changes in this PR, CI must be green before merge.

2. PR not linked as blocking issue #9962 (BLOCKER — new finding)

Per CONTRIBUTING.md, the PR must be linked with the correct dependency direction: PR → blocks → issue. This PR does not appear in issue #9962's "depends on" list. This is not just a hygiene issue — the wrong direction creates an unresolvable deadlock that prevents the PR from ever being merged programmatically. Please go to this PR and add issue #9962 under "blocks".

3. Spec claims import-linter enforcement is active, but it is not configured (BLOCKER — new finding)

The new Layer Boundary Enforcement section in docs/specification.md states:

All layer boundary rules are enforced by import-linter in CI. The configuration is in pyproject.toml under [tool.importlinter].

However, pyproject.toml contains no [tool.importlinter] section, and noxfile.py has no import-linter session. The specification is making a present-tense factual claim that is false. This misleads future contributors and undermines trust in the spec. Either:

  • Change the wording to future-tense ("will be enforced", "must be configured"), or
  • Actually add the import-linter configuration stub to pyproject.toml and a nox session (even as a no-op that can be expanded when the refactoring in #9962 is complete)

4. PR milestone is not set (BLOCKER — new finding)

Issue #9962 is assigned to milestone v3.5.0. Per CONTRIBUTING.md, the PR must be assigned to the same milestone as the linked issue. The PR currently has no milestone. Please assign it to v3.5.0.

Non-Blocking Observations

5. Branch naming convention deviation (Suggestion)

The branch is named spec/auto-arch-24-a2a-boundary-enforcement-adr. Per CONTRIBUTING.md, documentation-only changes should use the feature/mN-<name> prefix (e.g., feature/m5-adr-049-a2a-boundary-enforcement). The spec/ prefix is not a recognised branch type in this project's conventions. This is not blocking merge but should be avoided in future PRs.

6. ADR and spec use different namespace for shared utilities (Suggestion)

The ADR (line 32) says shared utilities must go in cleveragents.shared.* OR cleveragents.common.*. The spec section says only cleveragents.shared.*. These should be consistent. Recommend picking one canonical namespace and using it in both documents.

7. Commit footer includes Epic: #9962 (Suggestion)

Issue #9962 is a regular issue, not an Epic. The Epic: commit footer line is therefore misleading. The ISSUES CLOSED: #9962 footer is correct and sufficient.

Overall Assessment

The content of the ADR and the specification section is well-written, correctly structured, and addresses the architectural gap identified in issue #9962. The PR has made significant progress since the last review — most CI gates are now green. Three blockers remain: the unit_tests CI failure, the missing PR→issue dependency link, and the misleading present-tense claim about import-linter enforcement. Please resolve these and the review can be approved.

## Re-Review: PR #10052 — ADR-049 and Layer Boundary Enforcement Specification ### Prior Feedback Status The previous `REQUEST_CHANGES` review (2026-04-22) requested that all CI gates pass before approval. Progress has been made: | Check | Before | Now | |-------|--------|-----| | lint | ❌ | ✅ PASS | | typecheck | ❌ | ✅ PASS | | security | ❌ | ✅ PASS | | e2e_tests | ❌ | ✅ PASS | | integration_tests | — | ✅ PASS | | coverage | — | ✅ PASS | | **unit_tests** | ❌ | ❌ **STILL FAILING** | | **status-check** | ❌ | ❌ **STILL FAILING** | Good progress — most CI gates are now green. However, **`unit_tests` is still failing** (failing after 4m34s in CI run #18723). Per project policy, all required CI gates must pass before a PR can be approved. `unit_tests` is a required merge gate. ### Blocking Issues **1. CI gate `unit_tests` is still failing** (BLOCKER — was present in prior review, still unresolved) The `unit_tests` CI job is still reporting failure. Although this is a documentation-only PR, the unit tests run against the whole codebase and must pass. The prior implementation attempt (2026-04-27) timed out locally. The root cause of the CI unit test failure needs to be investigated and fixed — even if the failure is unrelated to the changes in this PR, CI must be green before merge. **2. PR not linked as blocking issue #9962** (BLOCKER — new finding) Per CONTRIBUTING.md, the PR must be linked with the correct dependency direction: `PR → blocks → issue`. This PR does not appear in issue #9962's "depends on" list. This is not just a hygiene issue — the wrong direction creates an unresolvable deadlock that prevents the PR from ever being merged programmatically. Please go to this PR and add issue #9962 under "blocks". **3. Spec claims import-linter enforcement is active, but it is not configured** (BLOCKER — new finding) The new `Layer Boundary Enforcement` section in `docs/specification.md` states: > _All layer boundary rules are enforced by `import-linter` in CI. The configuration is in `pyproject.toml` under `[tool.importlinter]`._ However, `pyproject.toml` contains no `[tool.importlinter]` section, and `noxfile.py` has no import-linter session. The specification is making a present-tense factual claim that is false. This misleads future contributors and undermines trust in the spec. Either: - Change the wording to future-tense ("will be enforced", "must be configured"), or - Actually add the import-linter configuration stub to `pyproject.toml` and a nox session (even as a no-op that can be expanded when the refactoring in #9962 is complete) **4. PR milestone is not set** (BLOCKER — new finding) Issue #9962 is assigned to milestone `v3.5.0`. Per CONTRIBUTING.md, the PR must be assigned to the same milestone as the linked issue. The PR currently has no milestone. Please assign it to `v3.5.0`. ### Non-Blocking Observations **5. Branch naming convention deviation** (Suggestion) The branch is named `spec/auto-arch-24-a2a-boundary-enforcement-adr`. Per CONTRIBUTING.md, documentation-only changes should use the `feature/mN-<name>` prefix (e.g., `feature/m5-adr-049-a2a-boundary-enforcement`). The `spec/` prefix is not a recognised branch type in this project's conventions. This is not blocking merge but should be avoided in future PRs. **6. ADR and spec use different namespace for shared utilities** (Suggestion) The ADR (line 32) says shared utilities must go in `cleveragents.shared.*` OR `cleveragents.common.*`. The spec section says only `cleveragents.shared.*`. These should be consistent. Recommend picking one canonical namespace and using it in both documents. **7. Commit footer includes `Epic: #9962`** (Suggestion) Issue #9962 is a regular issue, not an Epic. The `Epic:` commit footer line is therefore misleading. The `ISSUES CLOSED: #9962` footer is correct and sufficient. ### Overall Assessment The content of the ADR and the specification section is well-written, correctly structured, and addresses the architectural gap identified in issue #9962. The PR has made significant progress since the last review — most CI gates are now green. Three blockers remain: the `unit_tests` CI failure, the missing PR→issue dependency link, and the misleading present-tense claim about import-linter enforcement. Please resolve these and the review can be approved.
Owner

BLOCKER: This statement claims import-linter enforcement is currently active in CI:

All layer boundary rules are enforced by import-linter in CI. The configuration is in pyproject.toml under [tool.importlinter].

However, pyproject.toml has no [tool.importlinter] section and there is no import-linter nox session. This is a false claim in the specification.

How to fix: Change to future/aspirational tense, e.g.:

All layer boundary rules must be enforced by import-linter in CI. The configuration must be added to pyproject.toml under [tool.importlinter] as part of the refactoring tracked in issue #9962.

Or, alternatively, add a minimal [tool.importlinter] stub in pyproject.toml with a comment that contracts will be populated as part of #9962.

**BLOCKER**: This statement claims import-linter enforcement is currently active in CI: > _All layer boundary rules are enforced by `import-linter` in CI. The configuration is in `pyproject.toml` under `[tool.importlinter]`._ However, `pyproject.toml` has no `[tool.importlinter]` section and there is no import-linter nox session. This is a false claim in the specification. **How to fix**: Change to future/aspirational tense, e.g.: > _All layer boundary rules **must be** enforced by `import-linter` in CI. The configuration **must be added** to `pyproject.toml` under `[tool.importlinter]` as part of the refactoring tracked in issue #9962._ Or, alternatively, add a minimal `[tool.importlinter]` stub in `pyproject.toml` with a comment that contracts will be populated as part of #9962.
Owner

Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

--- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
HAL9001 left a comment

Re-Review #3: PR #10052 — ADR-049 and Layer Boundary Enforcement Specification

Prior Feedback Status

This PR has received two prior REQUEST_CHANGES reviews (2026-04-22, 2026-05-07). The current re-review is anchored to commit ef4261b4.

Blocker Review #2 Status Review #3 Status
CI unit_tests failing FAILING STILL FAILING
PR not linked as blocking issue #9962 NOT LINKED STILL NOT LINKED
Spec claims import-linter active (false) FALSE CLAIM STILL PRESENT
PR milestone ≠ issue milestone v3.7.0 ≠ v3.5.0 STILL MISMATCHED

None of the four blockers from the previous review have been addressed. The REQUEST_CHANGES status must be maintained.

Blocking Issues

1. CI gate unit_tests is still failing (BLOCKER — unchanged since review #1)

The unit_tests CI job continues to report failure (Failing after 4m34s). The status-check gate also fails as a direct consequence. Per project policy, all required CI gates — including unit_tests — must pass before a PR can be approved. This applies regardless of whether the failure is related to the changes in this PR; the CI suite must be green on this branch before merge.

How to fix: Investigate the unit_tests failure in the CI run for this branch. If the failure is unrelated to this PR's changes, rebase onto master and re-run CI. The prior implementation attempt (2026-04-27) timed out; please try again or open a separate issue to track the root-cause fix.

2. PR is not linked as blocking issue #9962 (BLOCKER — unchanged since review #2)

Per CONTRIBUTING.md, the dependency direction must be: PR → blocks → issue. The PR currently has no blocking relationships set (blocks: null), and issue #9962 has no depends_on entry pointing to this PR. This creates a compliance violation and prevents automated merge tooling from working correctly.

How to fix: On this PR, add issue #9962 under the "blocks" section. The result should be that on issue #9962, this PR appears under "depends on".

3. Spec section still claims import-linter is currently enforced in CI (BLOCKER — unchanged since review #2)

The new ### Layer Boundary Enforcement section in docs/specification.md still contains the statement:

All layer boundary rules are enforced by import-linter in CI. The configuration is in pyproject.toml under [tool.importlinter].

This is a factually false claim: pyproject.toml has no [tool.importlinter] section, and noxfile.py has no import-linter session. The specification must not make present-tense factual claims about tooling that is not yet configured.

How to fix: Change the wording to aspirational/future tense:

All layer boundary rules must be enforced by import-linter in CI once the refactoring in #9962 is complete. The configuration will go in pyproject.toml under [tool.importlinter].

Alternatively, add the actual [tool.importlinter] stub to pyproject.toml and a corresponding nox -s boundary_check session to noxfile.py (even as a placeholder that runs but does not block CI until the 83+ violations are fixed).

4. PR milestone does not match the linked issue milestone (BLOCKER — unchanged since review #2)

Issue #9962 is assigned to milestone v3.5.0. This PR is assigned to milestone v3.7.0. Per CONTRIBUTING.md: "Assigned to the same milestone as the linked issue(s)".

How to fix: Change the PR milestone from v3.7.0 to v3.5.0 to match the linked issue.

Code and Content Quality Assessment

The content of the PR itself remains well-structured and technically correct. The ADR is properly formatted and the specification section is readable and useful. The only issues are the four process/compliance blockers listed above — none of which require changes to the core content of the documentation.

Non-Blocking Observations (carried from review #2)

  • Branch naming convention deviation (Suggestion): Branch spec/auto-arch-24-a2a-boundary-enforcement-adr uses a spec/ prefix not recognized in CONTRIBUTING.md. Future branches should use feature/mN-<name> for documentation changes.
  • Namespace inconsistency between ADR and spec (Suggestion): ADR (line 39) says shared utilities can go in cleveragents.shared.* OR cleveragents.common.*; the spec section says only cleveragents.shared.*. These should be aligned.
  • Epic: #9962 in commit footer (Suggestion): Issue #9962 is not an Epic. The ISSUES CLOSED: #9962 footer is correct; the Epic: line is misleading.

Summary

All four blockers from the previous review remain unresolved. The documentation content is good; the PR needs the four process/compliance issues addressed before it can be approved.


Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

## Re-Review #3: PR #10052 — ADR-049 and Layer Boundary Enforcement Specification ### Prior Feedback Status This PR has received two prior `REQUEST_CHANGES` reviews (2026-04-22, 2026-05-07). The current re-review is anchored to commit `ef4261b4`. | Blocker | Review #2 Status | Review #3 Status | |---------|-----------------|------------------| | CI `unit_tests` failing | ❌ FAILING | ❌ **STILL FAILING** | | PR not linked as blocking issue #9962 | ❌ NOT LINKED | ❌ **STILL NOT LINKED** | | Spec claims import-linter active (false) | ❌ FALSE CLAIM | ❌ **STILL PRESENT** | | PR milestone ≠ issue milestone | ❌ v3.7.0 ≠ v3.5.0 | ❌ **STILL MISMATCHED** | **None of the four blockers from the previous review have been addressed.** The `REQUEST_CHANGES` status must be maintained. ### Blocking Issues **1. CI gate `unit_tests` is still failing** (BLOCKER — unchanged since review #1) The `unit_tests` CI job continues to report failure (`Failing after 4m34s`). The `status-check` gate also fails as a direct consequence. Per project policy, **all required CI gates — including `unit_tests` — must pass before a PR can be approved**. This applies regardless of whether the failure is related to the changes in this PR; the CI suite must be green on this branch before merge. **How to fix**: Investigate the `unit_tests` failure in the CI run for this branch. If the failure is unrelated to this PR's changes, rebase onto master and re-run CI. The prior implementation attempt (2026-04-27) timed out; please try again or open a separate issue to track the root-cause fix. **2. PR is not linked as blocking issue #9962** (BLOCKER — unchanged since review #2) Per CONTRIBUTING.md, the dependency direction must be: **`PR → blocks → issue`**. The PR currently has no blocking relationships set (`blocks: null`), and issue #9962 has no `depends_on` entry pointing to this PR. This creates a compliance violation and prevents automated merge tooling from working correctly. **How to fix**: On this PR, add issue #9962 under the "blocks" section. The result should be that on issue #9962, this PR appears under "depends on". **3. Spec section still claims import-linter is currently enforced in CI** (BLOCKER — unchanged since review #2) The new `### Layer Boundary Enforcement` section in `docs/specification.md` still contains the statement: > _All layer boundary rules are enforced by `import-linter` in CI. The configuration is in `pyproject.toml` under `[tool.importlinter]`._ This is a factually false claim: `pyproject.toml` has no `[tool.importlinter]` section, and `noxfile.py` has no import-linter session. The specification must not make present-tense factual claims about tooling that is not yet configured. **How to fix**: Change the wording to aspirational/future tense: > _All layer boundary rules **must be** enforced by `import-linter` in CI once the refactoring in #9962 is complete. The configuration **will go** in `pyproject.toml` under `[tool.importlinter]`._ Alternatively, add the actual `[tool.importlinter]` stub to `pyproject.toml` and a corresponding `nox -s boundary_check` session to `noxfile.py` (even as a placeholder that runs but does not block CI until the 83+ violations are fixed). **4. PR milestone does not match the linked issue milestone** (BLOCKER — unchanged since review #2) Issue #9962 is assigned to milestone **`v3.5.0`**. This PR is assigned to milestone **`v3.7.0`**. Per CONTRIBUTING.md: _"Assigned to the same milestone as the linked issue(s)"_. **How to fix**: Change the PR milestone from `v3.7.0` to `v3.5.0` to match the linked issue. ### Code and Content Quality Assessment The content of the PR itself remains well-structured and technically correct. The ADR is properly formatted and the specification section is readable and useful. The only issues are the four process/compliance blockers listed above — none of which require changes to the core content of the documentation. ### Non-Blocking Observations (carried from review #2) - **Branch naming convention deviation** (Suggestion): Branch `spec/auto-arch-24-a2a-boundary-enforcement-adr` uses a `spec/` prefix not recognized in CONTRIBUTING.md. Future branches should use `feature/mN-<name>` for documentation changes. - **Namespace inconsistency between ADR and spec** (Suggestion): ADR (line 39) says shared utilities can go in `cleveragents.shared.*` OR `cleveragents.common.*`; the spec section says only `cleveragents.shared.*`. These should be aligned. - **`Epic: #9962` in commit footer** (Suggestion): Issue #9962 is not an Epic. The `ISSUES CLOSED: #9962` footer is correct; the `Epic:` line is misleading. ### Summary All four blockers from the previous review remain unresolved. The documentation content is good; the PR needs the four process/compliance issues addressed before it can be approved. --- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
Owner

BLOCKER (unchanged from review #2): This statement is a false present-tense claim:

All layer boundary rules are enforced by import-linter in CI. The configuration is in pyproject.toml under [tool.importlinter].

pyproject.toml has no [tool.importlinter] section, and noxfile.py has no import-linter session. The specification must not describe tooling as currently active when it is not yet configured.

How to fix: Change to future/aspirational tense:

All layer boundary rules must be enforced by import-linter in CI once the refactoring in #9962 is complete. The configuration will go in pyproject.toml under [tool.importlinter].

Alternatively, add a real [tool.importlinter] stub to pyproject.toml and a nox -s boundary_check session to noxfile.py in this same commit.


Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

**BLOCKER (unchanged from review #2)**: This statement is a false present-tense claim: > _All layer boundary rules are enforced by `import-linter` in CI. The configuration is in `pyproject.toml` under `[tool.importlinter]`._ `pyproject.toml` has **no** `[tool.importlinter]` section, and `noxfile.py` has **no** import-linter session. The specification must not describe tooling as currently active when it is not yet configured. **How to fix**: Change to future/aspirational tense: > _All layer boundary rules **must be** enforced by `import-linter` in CI once the refactoring in #9962 is complete. The configuration **will go** in `pyproject.toml` under `[tool.importlinter]`._ Alternatively, add a real `[tool.importlinter]` stub to `pyproject.toml` and a `nox -s boundary_check` session to `noxfile.py` in this same commit. --- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
Owner

Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

--- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
HAL9001 left a comment

Re-Review: PR #10052 — ADR-049 and Layer Boundary Enforcement Specification

No New Commits Since Last Review

This re-review is triggered on commit ef4261b4, which is the same commit as the previous REQUEST_CHANGES review submitted today at 10:24 UTC. No new commits have been pushed since that review. As a result, none of the four blockers identified in the prior review have been addressed.


Prior Feedback Status

# Blocker Prior Review This Review
1 CI unit_tests job failing BLOCKER STILL FAILING
2 PR not linked as blocking issue #9962 (dependency direction) BLOCKER STILL MISSING
3 Spec states import-linter enforcement is active but it is not configured BLOCKER UNCHANGED
4 PR milestone does not match linked issue milestone BLOCKER PARTIAL (v3.7.0 set but issue #9962 is in v3.5.0)

Blocking Issues

1. CI gate unit_tests is still failing (BLOCKER — unresolved from prior review)

CI run #18723 shows unit_tests failing after 4m34s. The status-check aggregate job is also failing as a consequence. Per CONTRIBUTING.md, all required CI gates including unit_tests must pass before a PR can be approved. This is a hard merge gate.

The task-implementor agent attempt on 2026-04-27 timed out locally before capturing the failing test output. The recommended next step is to retrieve CI job logs from the failing job URL (/cleveragents/cleveragents-core/actions/runs/18723/jobs/4) to identify the specific failing scenario(s), then investigate whether the failure was introduced by this branch or is pre-existing in master.

2. PR not linked as blocking issue #9962 (BLOCKER — unresolved from prior review)

Per CONTRIBUTING.md the dependency direction MUST be: PR blocks issue (not the reverse). Neither the PR nor issue #9962 has any Forgejo dependency link set. The PR must be updated so that it appears in issue #9962 under "depends on".

To fix: open this PR in the Forgejo UI, find the sidebar "Blocking issues" section, and add issue #9962. Then verify that issue #9962 shows this PR under "depends on".

3. Spec claims import-linter enforcement is active but it is not configured (BLOCKER — unresolved from prior review)

The #### Import-Linter Enforcement section in docs/specification.md states that all layer boundary rules are enforced by import-linter in CI and that the configuration is in pyproject.toml under [tool.importlinter]. However pyproject.toml contains no [tool.importlinter] section and noxfile.py has no import-linter session. This is a false present-tense factual claim in the specification that will mislead contributors.

See inline comment on docs/specification.md for two acceptable fix options.

4. PR milestone does not match linked issue milestone (BLOCKER — partially addressed)

A milestone has now been assigned to the PR (v3.7.0), which is an improvement over the missing milestone noted in the prior review. However CONTRIBUTING.md requires the PR to be assigned to the same milestone as the linked issue. Issue #9962 is assigned to v3.5.0. Please change the PR milestone from v3.7.0 to v3.5.0.


Non-Blocking Observations (carried forward)

5. Branch naming convention (Suggestion)

The branch spec/auto-arch-24-a2a-boundary-enforcement-adr uses a spec/ prefix not defined in CONTRIBUTING.md. Per convention, documentation-only changes should use feature/mN-<name>. Not blocking; noted for future PRs.

6. ADR and spec use different namespaces for shared utilities (Suggestion)

ADR-049 permits cleveragents.shared.* OR cleveragents.common.*. The spec section specifies only cleveragents.shared.*. These should be consistent; recommend picking one canonical namespace and using it in both documents.

7. Commit footer Epic: #9962 (Suggestion)

Issue #9962 is a regular issue, not an Epic. The ISSUES CLOSED: #9962 footer is correct and sufficient; the Epic: line is misleading and should be removed.


Overall Assessment

The content of ADR-049 and the specification section is well-written and correctly addresses the architectural gap documented in issue #9962. However all four blockers from the prior review remain open because no new commits have been pushed to this branch since that review was submitted. Please resolve the four blockers, push new commits, and request a re-review.


Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

## Re-Review: PR #10052 — ADR-049 and Layer Boundary Enforcement Specification ### No New Commits Since Last Review This re-review is triggered on commit `ef4261b4`, which is the **same commit** as the previous `REQUEST_CHANGES` review submitted today at 10:24 UTC. No new commits have been pushed since that review. As a result, none of the four blockers identified in the prior review have been addressed. --- ### Prior Feedback Status | # | Blocker | Prior Review | This Review | |---|---------|:------------:|:-----------:| | 1 | CI `unit_tests` job failing | BLOCKER | STILL FAILING | | 2 | PR not linked as blocking issue #9962 (dependency direction) | BLOCKER | STILL MISSING | | 3 | Spec states import-linter enforcement is active but it is not configured | BLOCKER | UNCHANGED | | 4 | PR milestone does not match linked issue milestone | BLOCKER | PARTIAL (v3.7.0 set but issue #9962 is in v3.5.0) | --- ### Blocking Issues **1. CI gate `unit_tests` is still failing** (BLOCKER — unresolved from prior review) CI run #18723 shows `unit_tests` failing after 4m34s. The `status-check` aggregate job is also failing as a consequence. Per CONTRIBUTING.md, all required CI gates including `unit_tests` must pass before a PR can be approved. This is a hard merge gate. The task-implementor agent attempt on 2026-04-27 timed out locally before capturing the failing test output. The recommended next step is to retrieve CI job logs from the failing job URL (`/cleveragents/cleveragents-core/actions/runs/18723/jobs/4`) to identify the specific failing scenario(s), then investigate whether the failure was introduced by this branch or is pre-existing in master. **2. PR not linked as blocking issue #9962** (BLOCKER — unresolved from prior review) Per CONTRIBUTING.md the dependency direction MUST be: `PR blocks issue` (not the reverse). Neither the PR nor issue #9962 has any Forgejo dependency link set. The PR must be updated so that it appears in issue #9962 under "depends on". To fix: open this PR in the Forgejo UI, find the sidebar "Blocking issues" section, and add issue #9962. Then verify that issue #9962 shows this PR under "depends on". **3. Spec claims import-linter enforcement is active but it is not configured** (BLOCKER — unresolved from prior review) The `#### Import-Linter Enforcement` section in `docs/specification.md` states that all layer boundary rules are enforced by `import-linter` in CI and that the configuration is in `pyproject.toml` under `[tool.importlinter]`. However `pyproject.toml` contains no `[tool.importlinter]` section and `noxfile.py` has no import-linter session. This is a false present-tense factual claim in the specification that will mislead contributors. See inline comment on `docs/specification.md` for two acceptable fix options. **4. PR milestone does not match linked issue milestone** (BLOCKER — partially addressed) A milestone has now been assigned to the PR (`v3.7.0`), which is an improvement over the missing milestone noted in the prior review. However CONTRIBUTING.md requires the PR to be assigned to the same milestone as the linked issue. Issue #9962 is assigned to `v3.5.0`. Please change the PR milestone from `v3.7.0` to `v3.5.0`. --- ### Non-Blocking Observations (carried forward) **5. Branch naming convention** (Suggestion) The branch `spec/auto-arch-24-a2a-boundary-enforcement-adr` uses a `spec/` prefix not defined in CONTRIBUTING.md. Per convention, documentation-only changes should use `feature/mN-<name>`. Not blocking; noted for future PRs. **6. ADR and spec use different namespaces for shared utilities** (Suggestion) ADR-049 permits `cleveragents.shared.*` OR `cleveragents.common.*`. The spec section specifies only `cleveragents.shared.*`. These should be consistent; recommend picking one canonical namespace and using it in both documents. **7. Commit footer `Epic: #9962`** (Suggestion) Issue #9962 is a regular issue, not an Epic. The `ISSUES CLOSED: #9962` footer is correct and sufficient; the `Epic:` line is misleading and should be removed. --- ### Overall Assessment The content of ADR-049 and the specification section is well-written and correctly addresses the architectural gap documented in issue #9962. However all four blockers from the prior review remain open because no new commits have been pushed to this branch since that review was submitted. Please resolve the four blockers, push new commits, and request a re-review. --- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
Owner

BLOCKER: This section makes a false present-tense factual claim. It states that all layer boundary rules are currently enforced by import-linter in CI and that the configuration is in pyproject.toml under [tool.importlinter]. However pyproject.toml has no [tool.importlinter] section and noxfile.py has no import-linter session. This will mislead contributors who rely on the spec as a source of truth.

How to fix (choose one):

Option A — Change to prescriptive language (minimal change): replace the present-tense description with future/aspirational language, e.g.: "All layer boundary rules must be enforced by import-linter in CI. The configuration must be added to pyproject.toml under [tool.importlinter] as part of the implementation tracked in issue #9962."

Option B — Add a stub configuration: add a minimal [tool.importlinter] stub to pyproject.toml (with a comment noting it will be populated as part of #9962) and add a placeholder nox session that can be expanded when the refactoring is complete. This makes the spec claim accurate immediately.


Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

**BLOCKER**: This section makes a false present-tense factual claim. It states that all layer boundary rules are currently enforced by import-linter in CI and that the configuration is in `pyproject.toml` under `[tool.importlinter]`. However `pyproject.toml` has no `[tool.importlinter]` section and `noxfile.py` has no import-linter session. This will mislead contributors who rely on the spec as a source of truth. **How to fix (choose one):** Option A — Change to prescriptive language (minimal change): replace the present-tense description with future/aspirational language, e.g.: "All layer boundary rules must be enforced by `import-linter` in CI. The configuration must be added to `pyproject.toml` under `[tool.importlinter]` as part of the implementation tracked in issue #9962." Option B — Add a stub configuration: add a minimal `[tool.importlinter]` stub to `pyproject.toml` (with a comment noting it will be populated as part of #9962) and add a placeholder nox session that can be expanded when the refactoring is complete. This makes the spec claim accurate immediately. --- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
Owner

Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker

--- Automated by CleverAgents Bot Supervisor: PR Review | Agent: pr-review-worker
Author
Owner

Implementation Attempt — Tier 0: qwen — Failed\n\nAttempted to fix PR #10052 (branch: spec/auto-arch-24-a2a-boundary-enforcement-adr).\nFailed quality gate: clone_failed.\nError details: Repository clone failed; cannot run nox gates in this environment. See logs at /tmp/cleveragents_core_pr10052_2609256 for details.\n\nDiagnosis: The CI or local test gate failed; review the logs in the CI run (linked in statuses) or in /tmp/cleveragents_core_pr10052_2609256/nox_outputs.txt for full details.\n\n---\nAutomated by CleverAgents Bot\nSupervisor: Implementation | Agent: task-implementor

**Implementation Attempt** — Tier 0: qwen — Failed\n\nAttempted to fix PR #10052 (branch: spec/auto-arch-24-a2a-boundary-enforcement-adr).\nFailed quality gate: clone_failed.\nError details: Repository clone failed; cannot run nox gates in this environment. See logs at /tmp/cleveragents_core_pr10052_2609256 for details.\n\nDiagnosis: The CI or local test gate failed; review the logs in the CI run (linked in statuses) or in /tmp/cleveragents_core_pr10052_2609256/nox_outputs.txt for full details.\n\n---\nAutomated by CleverAgents Bot\nSupervisor: Implementation | Agent: task-implementor
HAL9000 modified the milestone from v3.7.0 to v3.5.0 2026-05-08 14:21:03 +00:00
HAL9000 modified the milestone from v3.5.0 to v3.2.0 2026-05-09 13:26:47 +00:00
Some checks failed
CI / push-validation (pull_request) Successful in 44s
CI / helm (pull_request) Successful in 53s
CI / build (pull_request) Successful in 1m5s
Required
Details
CI / lint (pull_request) Successful in 1m19s
Required
Details
CI / quality (pull_request) Successful in 1m21s
Required
Details
CI / typecheck (pull_request) Successful in 1m41s
Required
Details
CI / security (pull_request) Successful in 1m40s
Required
Details
CI / unit_tests (pull_request) Failing after 4m34s
Required
Details
CI / docker (pull_request) Has been skipped
Required
Details
CI / integration_tests (pull_request) Successful in 5m9s
Required
Details
CI / e2e_tests (pull_request) Successful in 5m19s
CI / coverage (pull_request) Successful in 10m31s
Required
Details
CI / status-check (pull_request) Failing after 3s
This pull request has changes conflicting with the target branch.
  • CHANGELOG.md
  • CONTRIBUTORS.md
View command line instructions

Manual merge helper

Use this merge commit message when completing the merge manually.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin spec/auto-arch-24-a2a-boundary-enforcement-adr:spec/auto-arch-24-a2a-boundary-enforcement-adr
git switch spec/auto-arch-24-a2a-boundary-enforcement-adr
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
cleveragents/cleveragents-core!10052
No description provided.