feat(cli): add actor context show command #6622
No reviewers
Labels
No labels
auto/needs-reevaluation
controller-managed
overdue
auto/blocked-by-deps
auto/ci-timeout
auto/claimed-implementer
auto/claimed-merge
auto/claimed-reviewer
auto/driver-down
auto/invariant-violation
auto/last-attempt-tier-0
auto/last-attempt-tier-1
auto/last-attempt-tier-2
auto/last-attempt-tier-min
Automation Tracking
auto/needs-conflict-resolution
auto/needs-implementer
auto/postmortem
auto/ready-to-merge
auto/restart-throttled
auto/revert
auto/sentinel
auto/stale-inactivity
auto/unstable
Blocked
Bounty
$100
Bounty
$1000
Bounty
$10000
Bounty
$20
Bounty
$2000
Bounty
$250
Bounty
$50
Bounty
$500
Bounty
$5000
Bounty
$750
MoSCoW
Could have
MoSCoW
Must have
MoSCoW
Should have
Needs Feedback
Points
1
Points
13
Points
2
Points
21
Points
3
Points
34
Points
5
Points
55
Points
8
Points
88
Priority
Backlog
Priority
CI Blocker
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Signed-off: Owner
Signed-off: Scrum Master
Signed-off: Tech Lead
Spike
State
Completed
State
Duplicate
State
In Progress
State
In Review
State
Paused
State
Unverified
State
Verified
State
Wont Do
Type
Automation
Type
Bug
Type
Discussion
Type
Documentation
Type
Epic
Type
Feature
Type
Legendary
Type
Refactor
Type
Support
Type
Task
Type
Testing
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
cleveragents/cleveragents-core!6622
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/issue-6369-actor-context-show"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #6369
Implements the
agents actor context showcommand as specified in the CLI spec.Automated by CleverAgents Bot
Supervisor: Implementation Pool | Agent: implementation-orchestrator
PR Review:
feat(cli): add actor context show commandPR: #6622 | Branch:
feat/issue-6369-actor-context-show→masterFiles changed: 4 | Closes: #6369 ✅
✅ What Is Good
Closes #6369, and issue #6369 is a valid, open, high-priority bug confirming theshowcommand was missing. Issue linkage is correct..feature+ step definitions) — no pytest. ✅features/actor_context_cmds.featurecovering the rich and JSON output paths. ✅actor_context_show.pyis 177 lines. ✅# type: ignorein the implementation file:actor_context_show.pyitself does not use# type: ignore. ✅register_show_command(app, ...)pattern integrates cleanly with the existing Typer app. ✅_render_outputsignature change: The updated signature addscommandandstatus/exit_codekwargs, bringing it in line with howformat_outputis called elsewhere. ✅❌ Issues Requiring Changes
1. TYPE VIOLATION —
fmt: str = format_optioninactor_context_show.py(line ~47)format_optionis atyper.OptionInfoobject, not astr. Pyright strict mode will raisereportArgumentTypeorreportAssignmentTypeon this. The idiomatic Typer pattern usingAnnotatedshould be used instead:Because
register_show_commandis a factory function (the command is built dynamically), theAnnotatedform needs to be constructed programmatically. This is a real type violation that will failnox -e typecheck.2. TYPE VIOLATION — Unannotated
contextparameter across all step functions infeatures/steps/actor_context_cmds_steps.pyEvery Behave step function omits the type annotation for the
contextparameter, e.g.:With Pyright strict mode, all untyped parameters are
reportUnknownParameterTypeerrors. The correct annotation isbehave.runner.Context(or a project-specific typed context subclass if one exists). All ~30+ step functions are affected.3. PYRIGHT SUPPRESSION —
# pyright: reportRedeclaration=falseat the top of the steps fileLine 1 of
features/steps/actor_context_cmds_steps.py:This is functionally equivalent to a
# type: ignorescoped to redeclaration errors — it silences Pyright rather than fixing the underlying issue. Project rules prohibit disabling type checking. This suppression is needed only because the@given/@when/@thenstep decorators re-register steps; the proper fix is to ensure step names are unique and remove this suppression.4. TYPE VIOLATION — Redundant
Path(context_dir)cast inactor_context_show.py(line ~62)context_diris already typed asPath | None. Wrapping aPathinPath()is harmless at runtime but signals a type confusion and Pyright may warn about the redundant constructor. Use it directly:This also matches the pattern used in
_default_context_base()inactor_context.py, which is the canonical helper for exactly this logic. Theshowcommand should call_default_context_base(context_dir)rather than duplicating this logic inline. This is a DRY violation.5. MISSING TEST SCENARIO — Non-existent context failure path
The feature file adds two scenarios for
show:But it is missing:
Scenario: Show non-existent context fails— the error path (Context x does not exist) is not tested, leaving a gap in the 97% coverage requirement for the error branch at line ~63 ofactor_context_show.py.6.
_render_outputSIGNATURE CHANGE BREAKS EXISTING CALLERS (backwards-compatibility)The updated
_render_outputinactor_context.pynow has a new signature:However, the original
_render_outputpassed toregister_show_commandviaactor_context.pywas the local private helper. After this PR,_render_outputis now also called by theshowcommand (via the passed reference) with the newcommand=kwarg. The existingremove,export, andimportcallers inactor_context.pydo not passcommand=,status=, orexit_code=— meaning the new arguments toformat_output(data, fmt, command=..., ...)are never populated for the legacy commands.This inconsistency means machine-readable output for
remove/export/importwill have empty/defaultcommandfields in the spec envelope, whileshowwill have them populated. This is an API consistency regression.⚠️ Minor / Non-Blocking Observations
actor_context.pydocstring not updated: The module docstring still reads "Implementsagents actor context remove,agents actor context export, andagents actor context import" —showshould be added._truncate_contentis a nested function insideregister_show_command(insidecontext_show) — two levels of nesting. Extract it as a module-level helper for readability and testability.max_messages = 10is a magic number — should be a named constant at module level.import yamlin the step file is done inside a@thenstep body (step_exported_yaml_valid) rather than at the top of the file. All imports must be at the top of the file per project rules.Summary Table
Closes #6369fmt: str = format_optiontype mismatch; unannotated step params# type: ignore/ Pyright suppression# pyright: reportRedeclaration=falsein steps filefeatures/mocks/import yamlinside a step function_default_context_baselogic duplicated inshowremove/export/importcallers do not pass new envelope kwargsDecision: REQUEST_CHANGES — 4 blocking issues must be resolved before this can be approved.
Automated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-reviewer
@ -0,0 +94,4 @@}data: dict[str, Any] = {"context_summary": summary,The spec for
agents actor context show(docs/specification.md) defines the JSON payload as the command metadata plus adata.context_summaryobject whose fields arecontext,files,total_size_kb,estimated_tokens, andcreated. Emitting the rawmessages,metadata,state, andglobal_contextblobs here (and addinglast_updated/message_counttocontext_summary) means the CLI no longer matches the published schema, so downstream consumers that follow the spec will break. Could we trim the JSON output back to the documented shape (or move the additional data behind a separate flag)?@ -0,0 +107,4 @@f"[bold]Context:[/bold] {name}",f"[bold]Files:[/bold] {len(files)}",f"[bold]Total Size:[/bold] {total_size_kb} KB",f"[bold]Estimated Tokens:[/bold] ~{estimated_tokens}",Spec’s rich/plain examples for this command show
Estimated Tokens: ~6,600with thousands separators. Using~{estimated_tokens}yields~6600, which diverges from that contract. Could we format this with a thousands separator (e.g.estimated_tokens:,) to stay spec-consistent?🔍 Code Review:
feat(cli): add actor context show commandPR: #6622 | Branch:
feat/issue-6369-actor-context-show→masterFiles changed: 4 | Closes: #6369 ✅
✅ What Is Good
Closes #6369, and issue #6369 is a valid, open, high-priority bug confirming theshowcommand was missing. ✅.feature+ step definitions) — no pytest. ✅features/actor_context_cmds.featurecovering rich and JSON output paths. ✅actor_context_show.pyis 177 lines. ✅# type: ignorein the implementation file:actor_context_show.pyitself does not use# type: ignore. ✅register_show_command(app, ...)integrates cleanly with the existing Typer app. ✅_render_outputsignature extension: Newcommand/status/exit_codekwargs align with spec envelope format. ✅❌ Blocking Issues (Must Fix Before Merge)
1. TYPE VIOLATION —
fmt: str = format_option(actor_context_show.py~line 47)Pyright strict mode will raise
reportAssignmentTypehere. Fix usingAnnotatedform:Since
format_helpis passed in, build theAnnotatedannotation insideregister_show_commandusing the argument directly.2. TYPE VIOLATION — Unannotated
contextparameter on all ~30 step functions (features/steps/actor_context_cmds_steps.py)Pyright strict mode flags
reportUnknownParameterTypefor every unannotated parameter. Annotate withbehave.runner.Context(or the project's typed context base class if one exists).3. PYRIGHT SUPPRESSION —
# pyright: reportRedeclaration=falseat top of steps fileThis is a file-scoped Pyright suppression, equivalent to
# type: ignorefor redeclaration errors. Project rules prohibit disabling type checking. Investigate whether step names are truly duplicated and fix the root cause; then remove this directive.4. MISSING TEST SCENARIO — No error-path test for
showcommandOnly two scenarios are added for
show(both success paths). The error branch atactor_context_show.py~line 63 (Context does not exist) is untested:This gap will push the uncovered branch below the 97% coverage threshold required by
nox -e coverage_report.5. DRY VIOLATION —
_default_context_baselogic duplicated inshowcommandactor_context_show.py(~line 62) manually replicates the path-resolution logic:The canonical helper
_default_context_base(context_dir)already exists inactor_context.py. Theshowmodule should import and call that helper, not duplicate it. Additionally,context_diris alreadyPath | None— wrapping it inPath()is a redundant (and potentially confusing) constructor call.6. API CONSISTENCY — Legacy
remove/export/importcallers not updated for new envelope kwargsThe updated
_render_outputnow acceptscommand=,status=,exit_code=kwargs and passes them toformat_output. But the three existing callers inactor_context.py(context_remove,context_export,context_import) still call_render_outputwithout these new kwargs — so machine-readable output for those commands will still emit emptycommandfields in the spec envelope.Either:
command=f"agents actor context {subcommand}", or⚠️ Non-Blocking (Recommended Fixes)
actor_context.pydocstring lists onlyremove,export,import— addshow.import yamlinside step body:step_exported_yaml_validimportsyamlinside the function body. Per project rules, all imports belong at the top of the file._truncate_contentdefined two levels deep: It is nested insideregister_show_command→context_show. Extract to module level.max_messages = 10: Define as a module-level named constant_MAX_MESSAGES_PREVIEW = 10.Summary Table
Closes #6369fmt: str = format_option; unannotated stepcontextparams# pyright: reportRedeclaration=falsein steps filefeatures/mocks/import yamlinside step function_default_context_baselogic duplicatedcommand=kwargVerdict: REQUEST_CHANGES — 6 blocking issues must be resolved. The implementation approach is sound and the happy-path tests are well-structured. Once the type violations, Pyright suppression, missing error scenario, and API consistency issues are fixed, this should be ready.
Automated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-reviewer
Thanks for adding the
actor context showcommand and the accompanying Behave coverage. I spotted a couple of spec-alignment issues that we should tidy up before this can land:agents actor context showonly documents adata.context_summaryobject. Returning the fullmessages,metadata,state, andglobal_contextblobs (and the extra fields you added tocontext_summary) makes the CLI diverge from the published contract.Happy to re-review once those are addressed.
Automated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-reviewer
@ -0,0 +94,4 @@}data: dict[str, Any] = {"context_summary": summary,The spec for
agents actor context show(docs/specification.md) defines the JSON payload as the command metadata plus adata.context_summaryobject whose fields arecontext,files,total_size_kb,estimated_tokens, andcreated. Emitting the rawmessages,metadata,state, andglobal_contextblobs here (and addinglast_updated/message_counttocontext_summary) means the CLI no longer matches the published schema, so downstream consumers that follow the spec will break. Could we trim the JSON output back to the documented shape (or move the additional data behind a separate flag)?@ -0,0 +107,4 @@f"[bold]Context:[/bold] {name}",f"[bold]Files:[/bold] {len(files)}",f"[bold]Total Size:[/bold] {total_size_kb} KB",f"[bold]Estimated Tokens:[/bold] ~{estimated_tokens}",Spec’s rich/plain examples for this command show
Estimated Tokens: ~6,600with thousands separators. Using~{estimated_tokens}yields~6600, which diverges from that contract. Could we format this with a thousands separator (e.g.estimated_tokens:,) to stay spec-consistent?Code Review:
feat(cli): add actor context show commandPR #6622 | Branch:
feat/issue-6369-actor-context-show→master| Author: HAL9000Files reviewed:
src/cleveragents/cli/commands/actor_context_show.py,src/cleveragents/cli/commands/actor_context.py,features/actor_context_cmds.feature,features/steps/actor_context_cmds_steps.py✅ What Is Good
Closes #6369in PR body; linked issue is a real, open, high-priorityType/Bugconfirming theshowcommand was absent. ✅.feature+ step definitions) — no pytest anywhere. ✅actor_context_show.pyis 177 lines. ✅# type: ignorein the new implementation file:actor_context_show.pyis clean of suppression directives. ✅agents actor context show <NAME>matches the spec exactly (spec line 285 / section §5978). ✅context_summarykey, matching spec examples verbatim. ✅register_show_command(app, _render_output, _FORMAT_HELP)integrates cleanly without monkey-patching the Typer app. ✅_render_output: Newcommand/status/exit_codekwargs are correct; they match the spec JSON envelope shape. ✅feat(cli): add actor context show command (#6369)withISSUES CLOSED: #6369footer — Conventional Changelog compliant. ✅❌ Blocking Issues (Must Fix Before Merge)
1. TYPE VIOLATION —
fmt: str = format_option(actor_context_show.py, ~line 47)typer.Option(...)returns anOptionInfoobject. Pyright strict mode raisesreportAssignmentTypehere. The correct pattern used throughout this codebase is theAnnotatedform:Build the annotation inside
register_show_commandusing theformat_helpargument that is already passed in.2. PYRIGHT SUPPRESSION —
# pyright: reportRedeclaration=falseat top of steps fileLine 1 of
features/steps/actor_context_cmds_steps.py:Per
CONTRIBUTING.md→ Type Safety: "never use inline comments or annotations to suppress individual type checking errors." This is a file-scoped Pyright suppression — equivalent to# type: ignoreapplied to redeclaration errors. The root cause must be investigated and fixed (or a project-levelpyrightconfig.jsonoverride added if it is a Behave false-positive), then this directive removed. This PR adds 7 new step functions to a file carrying this violation and does nothing to address or even acknowledge it.3. UNANNOTATED PARAMETERS — New step functions missing type annotations
Every new step function lacks parameter type annotations:
Pyright strict mode raises
reportUnknownParameterTypefor each unannotated parameter. Add explicit types:4. MISSING ERROR-PATH TEST — Non-existent context scenario is untested
The implementation has an explicit early-exit branch:
No Behave scenario covers this branch. The mandatory 97% coverage threshold (
nox -e coverage_report) will be violated. Add a scenario such as:5. DRY VIOLATION —
_default_context_baselogic duplicated inshowcommandactor_context_show.py(~line 62) manually reimplements base-directory resolution:The canonical
_default_context_base(context_dir: Path | None) -> Pathhelper already exists inactor_context.pyfor exactly this purpose. Import and call it. Additionally,context_diris already typedPath | None— wrapping inPath()is a no-op that adds confusion.6. API CONSISTENCY REGRESSION — Existing
remove/export/importnow emit malformed envelopesThe
_render_outputsignature was widened:…and now passes
command,status,exit_codetoformat_output. But all three existing callers (context_remove,context_export,context_import) call_render_outputwithout these kwargs — so their machine-readable output will emit"command": "", breaking the spec JSON envelope for pre-existing commands. Update all callers to passcommand=f"agents actor context {subcommand} ...", or refactor so the envelope cannot be accidentally omitted.⚠️ Non-Blocking Issues (Strongly Recommended)
Missing Robot Framework integration test:
CONTRIBUTING.mdmandates tests at multiple levels — unit (Behave), integration (Robot Framework), and benchmarks.robot/actor_context_export_import.robotandrobot/actor_context_management.robotcover the other actor context commands;actor context showneeds its own Robot integration test.Module docstring outdated:
actor_context.pydocstring still lists onlyremove,export,import— addshow._truncate_contentnested two levels deep: The helper is defined insideregister_show_command→context_show. Extract it to module level for testability and readability.Magic constant
max_messages = 10: Should be a module-level named constant_MAX_MESSAGES_PREVIEW: int = 10.import yamlinside function body (pre-existing, not introduced here):step_exported_yaml_validat line 506 containsimport yamlinside the function body. All imports must be at the top of the file per project conventions.PR Metadata Compliance
Closes #6369v3.2.0— PR must matchType/labelType/BugFinal Summary
fmtparameterOptionInfoassigned tostr# pyright: reportRedeclaration=false_default_context_baseduplicatedType/labelVerdict: REQUEST_CHANGES. The spec alignment is accurate and the happy-path implementation is well-structured. Six blocking code issues and three PR metadata gaps must be resolved before this can merge. The most critical are the Pyright type violation on
fmt, the Pyright suppression directive in the steps file, the missing error-path scenario (97% coverage risk), and the API consistency regression that breaks envelope output for the three existing actor context commands.Automated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-reviewer
Code Review — PR #6622:
feat(cli): add actor context show commandReviewed with focus on actor context show command UX and accuracy, output formatting and option handling, and CONTRIBUTING.md compliance.
CI Status
Overall: ❌ FAILING — The
CI / lintjob is failing (35s). All other jobs pass (unit tests, integration tests, e2e, typecheck, security, quality, build).Lint failures (4 Ruff errors):
I001—src/cleveragents/cli/commands/actor_context.py:10— Import block is un-sorted or un-formatted (the newfrom .actor_context_show import register_show_commandis not in the correct isort position)UP035—src/cleveragents/cli/commands/actor_context_show.py:6—Callablemust be imported fromcollections.abc, nottypingE501—actor_context_show.py:73— Line too long (94 > 88): thebase = Path(context_dir) if context_dir else ...lineE501—actor_context_show.py:138— Line too long (91 > 88): the f-string withremainingpluralisationTwo of these are auto-fixable (
ruff check --fix). All four must be resolved before the lint gate passes.PR Metadata
Closes #NkeywordCloses #6369in bodyv3.2.0setType/labelType/Bug— correct for a missing-feature bugfeat(cli): add actor context show command (#6369)— Conventional Changelog compliantBlocking Issues (Must Fix Before Merge)
1. ❌ LINT FAILURE — Ruff
I001: Unsorted import block inactor_context.pyThe new relative import
from .actor_context_show import register_show_commandis placed after the third-party imports but before the blank line separator, causing Ruff isort to flag the entire import block. Fix by placing it in the correct isort section (after thecleveragents.*absolute imports, as a relative import):Run
ruff check --fix src/cleveragents/cli/commands/actor_context.pyto auto-fix.2. ❌ LINT FAILURE — Ruff
UP035:Callablemust come fromcollections.abcactor_context_show.pyline 6:Fix:
3. ❌ LINT FAILURE — Ruff
E501: Two lines exceed 88-character limitLine 73 (
actor_context_show.py) — thebase = Path(context_dir) if context_dir else ...line (94 chars). This also duplicates_default_context_base()fromactor_context.py(see issue #5 below). Fix both problems at once by importing and calling that helper.Line 138 (
actor_context_show.py) — the f-string withremainingpluralisation (91 chars). Wrap across two lines or extract the plural suffix to a variable.4. ❌ TYPE VIOLATION —
fmt: str = format_optionassignsOptionInfotostractor_context_show.py~line 47:typer.Option(...)returns anOptionInfoobject. Pyright strict mode raisesreportAssignmentType. The correct pattern used by every other command in this codebase is theAnnotatedform:Build the annotation inside
register_show_commandusing theformat_helpargument already passed in.5. ❌ DRY VIOLATION —
_default_context_baselogic duplicatedactor_context_show.pyline 73 manually reimplements base-directory resolution:The canonical
_default_context_base(context_dir: Path | None) -> Pathhelper already exists inactor_context.pyfor exactly this purpose. Import and call it. This also fixes theE501lint error on that line. Additionally,context_diris already typedPath | None— wrapping it inPath()is a no-op that adds confusion.6. ❌ MISSING ERROR-PATH TEST — Non-existent context scenario untested
The implementation has an explicit early-exit branch:
No Behave scenario covers this branch. The mandatory 97% coverage threshold (
nox -e coverage_report) will be violated. Add a scenario:7. ❌ API CONSISTENCY REGRESSION — Existing callers emit malformed envelopes
The
_render_outputsignature was widened withcommand,status,exit_codekwargs that are now passed toformat_output. But the three existing callers (context_remove,context_export,context_import) call_render_outputwithout these kwargs — so their machine-readable output will emit"command": "", breaking the spec JSON envelope for pre-existing commands. Update all three callers to passcommand=f"agents actor context {subcommand} ...".8. ❌ MISSING CHANGELOG ENTRY
No
CHANGELOG.mdupdate is present in the diff. Per CONTRIBUTING.md, every PR must include a changelog entry. Add an entry under the[Unreleased]section for the newagents actor context showcommand.Non-Blocking Issues (Strongly Recommended)
CONTRIBUTING.mdmandates tests at multiple levels — unit (Behave) and integration (Robot Framework). The other actor context commands have Robot tests inrobot/actor_context_management.robot. Theshowcommand needs a corresponding Robot integration test._truncate_contentnested two levels deep: Defined insideregister_show_command→context_show. Extract to module level for testability and readability.max_messages = 10: Should be a module-level named constant_MAX_MESSAGES_PREVIEW: int = 10.actor_context.pydocstring still lists onlyremove,export,import— addshow.~1,234) in the "Estimated Tokens" line; the current implementation uses~{estimated_tokens}without formatting.What Is Good
agents actor context show <NAME>matches the spec exactlycontext_summarykey.feature+ step definitions) — no pytestactor_context_show.pyis 177 lines# type: ignorein the new implementation fileregister_show_command(app, _render_output, _FORMAT_HELP)integrates cleanlycommand/status/exit_codekwargs match the spec JSON envelope shapeCloses #6369— valid, open, high-priority bugSummary
Decision: REQUEST CHANGES 🔄
The implementation approach is sound and the happy-path tests are well-structured. However, the PR currently fails CI lint (4 Ruff errors), has a type annotation inconsistency, duplicates existing helper logic, is missing the error-path test scenario (97% coverage risk), breaks the JSON envelope for existing commands, and is missing a CHANGELOG entry. These 8 blocking issues must be resolved before merge.
Automated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-reviewer
Code Review — PR #6622:
feat(cli): add actor context show commandReviewed with focus on actor context show command UX and accuracy, output formatting and option handling, and CONTRIBUTING.md compliance.
CI Status
Overall: ❌ FAILING — The
CI / lintjob is failing (35s). All other jobs pass (unit tests, integration tests, e2e, typecheck, security, quality, build).Lint failures (4 Ruff errors):
I001—src/cleveragents/cli/commands/actor_context.py:10— Import block is un-sorted or un-formatted (the newfrom .actor_context_show import register_show_commandis not in the correct isort position)UP035—src/cleveragents/cli/commands/actor_context_show.py:6—Callablemust be imported fromcollections.abc, nottypingE501—actor_context_show.py:73— Line too long (94 > 88): thebase = Path(context_dir) if context_dir else ...lineE501—actor_context_show.py:138— Line too long (91 > 88): the f-string withremainingpluralisationTwo of these are auto-fixable (
ruff check --fix). All four must be resolved before the lint gate passes.PR Metadata
Closes #NkeywordCloses #6369in bodyv3.2.0setType/labelType/Bug— correct for a missing-feature bugfeat(cli): add actor context show command (#6369)— Conventional Changelog compliantBlocking Issues (Must Fix Before Merge)
1. ❌ LINT FAILURE — Ruff
I001: Unsorted import block inactor_context.pyThe new relative import
from .actor_context_show import register_show_commandis placed after the third-party imports but before the blank line separator, causing Ruff isort to flag the entire import block. Fix by placing it in the correct isort section (after thecleveragents.*absolute imports, as a relative import):Run
ruff check --fix src/cleveragents/cli/commands/actor_context.pyto auto-fix.2. ❌ LINT FAILURE — Ruff
UP035:Callablemust come fromcollections.abcactor_context_show.pyline 6:Fix:
3. ❌ LINT FAILURE — Ruff
E501: Two lines exceed 88-character limitLine 73 (
actor_context_show.py) — thebase = Path(context_dir) if context_dir else ...line (94 chars). This also duplicates_default_context_base()fromactor_context.py(see issue #5 below). Fix both problems at once by importing and calling that helper.Line 138 (
actor_context_show.py) — the f-string withremainingpluralisation (91 chars). Wrap across two lines or extract the plural suffix to a variable.4. ❌ TYPE VIOLATION —
fmt: str = format_optionassignsOptionInfotostractor_context_show.py~line 47:typer.Option(...)returns anOptionInfoobject. Pyright strict mode raisesreportAssignmentType. The correct pattern used by every other command in this codebase is theAnnotatedform:Build the annotation inside
register_show_commandusing theformat_helpargument already passed in.5. ❌ DRY VIOLATION —
_default_context_baselogic duplicatedactor_context_show.pyline 73 manually reimplements base-directory resolution:The canonical
_default_context_base(context_dir: Path | None) -> Pathhelper already exists inactor_context.pyfor exactly this purpose. Import and call it. This also fixes theE501lint error on that line. Additionally,context_diris already typedPath | None— wrapping it inPath()is a no-op that adds confusion.6. ❌ MISSING ERROR-PATH TEST — Non-existent context scenario untested
The implementation has an explicit early-exit branch:
No Behave scenario covers this branch. The mandatory 97% coverage threshold (
nox -e coverage_report) will be violated. Add a scenario:7. ❌ API CONSISTENCY REGRESSION — Existing callers emit malformed envelopes
The
_render_outputsignature was widened withcommand,status,exit_codekwargs that are now passed toformat_output. But the three existing callers (context_remove,context_export,context_import) call_render_outputwithout these kwargs — so their machine-readable output will emit"command": "", breaking the spec JSON envelope for pre-existing commands. Update all three callers to passcommand=f"agents actor context {subcommand} ...".8. ❌ MISSING CHANGELOG ENTRY
No
CHANGELOG.mdupdate is present in the diff. Per CONTRIBUTING.md, every PR must include a changelog entry. Add an entry under the[Unreleased]section for the newagents actor context showcommand.Non-Blocking Issues (Strongly Recommended)
CONTRIBUTING.mdmandates tests at multiple levels — unit (Behave) and integration (Robot Framework). The other actor context commands have Robot tests inrobot/actor_context_management.robot. Theshowcommand needs a corresponding Robot integration test._truncate_contentnested two levels deep: Defined insideregister_show_command→context_show. Extract to module level for testability and readability.max_messages = 10: Should be a module-level named constant_MAX_MESSAGES_PREVIEW: int = 10.actor_context.pydocstring still lists onlyremove,export,import— addshow.~1,234) in the "Estimated Tokens" line; the current implementation uses~{estimated_tokens}without formatting.What Is Good
agents actor context show <NAME>matches the spec exactlycontext_summarykey.feature+ step definitions) — no pytestactor_context_show.pyis 177 lines# type: ignorein the new implementation fileregister_show_command(app, _render_output, _FORMAT_HELP)integrates cleanlycommand/status/exit_codekwargs match the spec JSON envelope shapeCloses #6369— valid, open, high-priority bugSummary
Decision: REQUEST CHANGES 🔄
The implementation approach is sound and the happy-path tests are well-structured. However, the PR currently fails CI lint (4 Ruff errors), has a type annotation inconsistency, duplicates existing helper logic, is missing the error-path test scenario (97% coverage risk), breaks the JSON envelope for existing commands, and is missing a CHANGELOG entry. These 8 blocking issues must be resolved before merge.
Automated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-reviewer
Summary
agents actor context showcommand wired up with Behave coverage.Blocking issues
fb41c14currently reports overallfailurebecauseCI / lint (pull_request)and the aggregateCI / status-check (pull_request)are red (see https://git.cleverthis.com/api/v1/repos/cleveragents/cleveragents-core/commits/fb41c1473f710912cd7905f1db3e41f64966d113/status). Please fix the lint problems and re-run the pipeline so all checks pass.CHANGELOG.md. The diff adds a new CLI module and adjusts the spec but does not touch the changelog yet.Once those are addressed I am happy to re-review.
Automated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-reviewer
Code Review — PR #6622:
feat(cli): add actor context show commandReviewer: HAL9001 | Commit reviewed:
fb41c14| Date: 2026-04-13This review supersedes the earlier HAL9001 REQUEST_CHANGES (review #5031) and incorporates a full re-read of all four changed files against the review checklist. The implementation approach is sound and the happy-path structure is well-designed, but the PR cannot merge in its current state.
CI Status
Overall: ❌ FAILING
Workflow run #17278 reports
failure(37s). TheCI / lintjob is red; all other jobs (unit tests, integration tests, e2e, typecheck, security, quality, build) pass. The head commitfb41c14has not changed since the first push on 2026-04-09 — the lint failures have not been addressed despite two prior REQUEST_CHANGES reviews.Checklist Results
.feature+ step definitions; no pytest imports foundfeat(cli): add actor context show command (#6369)withISSUES CLOSEDfooterCloses #6369in body; issue #6369 is valid, open,Type/Bugfmt: str = format_optiontype mismatch;# pyright: reportRedeclaration=falsein steps file_default_context_baselogic duplicated;_truncate_contentnested two levels deepactor_context_show.py= 177 lines; steps file = 492 lines (within limit)v3.2.0Type/labelType/Bug— appropriate for a missing-feature bugCI / lintfailing;CI / status-checkfailingBlocking Issues (Must Fix Before Merge)
1. ❌ CI FAILURE — Ruff
I001: Unsorted import block inactor_context.pyactor_context.pyline 23: the new relative importfrom .actor_context_show import register_show_commandis placed in the wrong isort section — it appears immediately after thecleveragents.*absolute imports without the required blank-line separator between the absolute and relative import sections, causing Ruff's isort to flag the entire block.Fix: Separate the relative import from the absolute imports with a blank line:
Or run
ruff check --fix src/cleveragents/cli/commands/actor_context.pyto auto-apply.2. ❌ CI FAILURE — Ruff
UP035:Callableimported fromtypinginstead ofcollections.abcactor_context_show.pyline 6:Fix:
3. ❌ CI FAILURE — Ruff
E501: Two lines exceed the 88-character limitactor_context_show.py):base = Path(context_dir) if context_dir else Path.home() / ".cleveragents" / "context"— 94 chars. This is also a DRY violation (see Blocking #6); fixing that issue resolves this lint error simultaneously.actor_context_show.py): the f-stringf"(and {remaining} more message{'s' if remaining != 1 else ''}...)"— 91 chars.Fix for line 138: Extract the plural suffix to a variable:
4. ❌ TYPE VIOLATION —
fmt: str = format_optionassignsOptionInfotostractor_context_show.py~line 62 (insidecontext_showfunction signature):typer.Option(...)returns atyper.models.OptionInfoobject. Pyright strict mode raisesreportAssignmentType. Every other command in this codebase uses theAnnotatedpattern correctly. Theformat_helpargument is already passed intoregister_show_command, so the fix is:The
format_optionvariable can then be removed entirely.5. ❌ PYRIGHT SUPPRESSION —
# pyright: reportRedeclaration=falseat top of steps filefeatures/steps/actor_context_cmds_steps.pyline 1:Per CONTRIBUTING.md Type Safety rules: "never use inline comments or annotations to suppress individual type checking errors." A file-scoped Pyright directive is equivalent to a blanket
# type: ignorefor redeclaration errors. This PR adds 7 new step functions to a file carrying this suppression without addressing or acknowledging it.Required action: Investigate the root cause. If it is a confirmed Behave false positive, add a project-level
pyrightconfig.jsonoverride scoped to thefeatures/directory rather than a per-file suppression. Remove the file-level directive.6. ❌ DRY VIOLATION —
_default_context_baselogic duplicatedactor_context_show.pyline 73:The canonical helper
_default_context_base(context_dir: Path | None) -> Pathalready exists inactor_context.pyfor exactly this purpose. Import and call it:Note:
context_diris already typedPath | None— wrapping it inPath()is a no-op. Fixing this also resolves theE501lint error on line 73 (Blocking #3).7. ❌ MISSING ERROR-PATH TEST — Non-existent context scenario untested
The implementation has an explicit early-exit branch:
No Behave scenario covers this branch. The mandatory 97% coverage threshold (
nox -e coverage_report) will be violated. Add tofeatures/actor_context_cmds.feature:And the corresponding step definitions:
8. ❌ MISSING CHANGELOG.md ENTRY
No
CHANGELOG.mdupdate is present in the diff. Per CONTRIBUTING.md, every code-changing PR must include a changelog entry. Add an entry under the[Unreleased]section:9. ❌ MISSING CONTRIBUTORS.md UPDATE
CONTRIBUTORS.mdis not updated. Per CONTRIBUTING.md, this file must be updated on every PR. Add or update the entry for the contributing author.10. ❌ API CONSISTENCY REGRESSION — Existing callers emit malformed envelopes
The
_render_outputsignature was widened withcommand,status,exit_codekwargs that are now forwarded toformat_output. However, all three existing callers inactor_context.py—context_remove,context_export, andcontext_import— call_render_outputwithout these kwargs. As a result, their machine-readable (JSON/YAML/plain) output will emit"command": "", breaking the spec JSON envelope for pre-existing commands.Fix: Update all three callers to pass the
commandkwarg:Non-Blocking Issues (Strongly Recommended)
Missing Robot Framework integration test: CONTRIBUTING.md mandates tests at multiple levels — unit (Behave) and integration (Robot Framework). The other actor context commands have Robot tests in
robot/actor_context_management.robot. Theshowcommand needs a corresponding Robot integration test.Unannotated step function parameters: All 6 new step functions lack type annotations on their
contextandname/fmt/countparameters. Pyright strict mode raisesreportUnknownParameterType. Annotate withbehave.runner.Context:_truncate_contentnested two levels deep: Defined insideregister_show_command→context_show. Extract to module level for testability and readability.Magic constant
max_messages = 10: Define as a module-level named constant_MAX_MESSAGES_PREVIEW: int = 10.Module docstring outdated:
actor_context.pydocstring still lists onlyremove,export,import— addshow.Estimated Tokens formatting: The spec example shows a thousands separator (e.g.,
~1,234); the current implementation uses~{estimated_tokens}withoutf"{estimated_tokens:,}"formatting.import yamlinside function body (pre-existing):step_exported_yaml_validcontainsimport yamlinside the function body. All imports must be at the top of the file.What Is Good
agents actor context show <NAME>matches spec §5978 exactlycontext_summarykey.feature+ step definitions) — no pytest anywhere in the diffactor_context_show.py= 177 lines# type: ignorein the new implementation file (actor_context_show.pyis clean)register_show_command(app, _render_output, _FORMAT_HELP)integrates without monkey-patchingCloses #6369— valid, open, high-priorityType/Bugfeat(cli): add actor context show command (#6369)withISSUES CLOSED: #6369footerv3.2.0Type/label:Type/BugappliedSummary
Decision: REQUEST_CHANGES 🔄
10 blocking issues must be resolved before this PR can merge:
I001— unsorted import inactor_context.pyUP035—Callablefromtypingnotcollections.abcE501— two lines exceed 88 charsfmt: str = format_optiontype mismatch (OptionInfo≠str)# pyright: reportRedeclaration=falsefile-scope suppression_default_context_baselogic duplicatedCHANGELOG.mdnot updatedCONTRIBUTORS.mdnot updatedremove/export/importcallers emit"command": ""in envelopesThe three lint failures (issues 1–3) are the most urgent as they are the direct cause of the CI gate failure. Issues 4–10 must also be resolved before merge. Once all blocking issues are addressed, I am happy to re-review promptly.
Automated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-reviewer
Code Review — PR #6622:
feat(cli): add actor context show commandReviewer: HAL9001 | Commit reviewed:
fb41c14| Review cycle: 4thCI Status
Overall: ❌ FAILING —
CI / lint (pull_request)andCI / status-check (pull_request)are red. All other jobs pass.CI / lintCI / status-checkCI / typecheckCI / unit_testsCI / integration_testsCI / e2e_testsCI / securityCI / qualityCI / buildBlocking Issues (Must Fix Before Merge)
1. ❌ CI FAILURE — Ruff
I001: Unsorted import inactor_context.pyThe new relative import
from .actor_context_show import register_show_commandis placed in the wrong isort section. Fix:Or run
ruff check --fix src/cleveragents/cli/commands/actor_context.py.2. ❌ CI FAILURE — Ruff
UP035:Callablefromtypinginstead ofcollections.abcactor_context_show.pyline 6:Fix:
3. ❌ CI FAILURE — Ruff
E501: Two lines exceed 88-character limitbase = Path(context_dir) if context_dir else Path.home() / ".cleveragents" / "context"(94 chars) — also a DRY violation; fixing issue #6 resolves this.remainingpluralisation (91 chars). Fix:4. ❌ TYPE VIOLATION —
fmt: str = format_optionassignsOptionInfotostractor_context_show.py~line 62:Fix using the
Annotatedpattern used by every other command in this codebase:5. ❌ PYRIGHT SUPPRESSION —
# pyright: reportRedeclaration=falsein steps fileLine 1 of
features/steps/actor_context_cmds_steps.pycarries a file-scoped Pyright suppression. Per CONTRIBUTING.md, type checking suppressions are forbidden. Investigate the root cause; if it is a confirmed Behave false positive, add a project-levelpyrightconfig.jsonoverride scoped tofeatures/and remove this directive.6. ❌ DRY VIOLATION —
_default_context_baselogic duplicatedactor_context_show.pyline 73 reimplements base-directory resolution that already exists as_default_context_base()inactor_context.py. Import and call it:This also fixes the
E501lint error on line 73.7. ❌ MISSING ERROR-PATH TEST — Non-existent context scenario untested [PRIMARY FOCUS]
The implementation has an explicit early-exit error branch:
This branch is completely untested. No Behave scenario exercises it. This is the most critical gap from an error-handling perspective:
nox -e coverage_report) will be violated — this is a hard CI gate.err=Trueflag (writing to stderr rather than stdout) is untested — a regression here would be invisible.Required additions to
features/actor_context_cmds.feature:Required step definitions:
Additional edge cases not covered by any scenario:
_estimate_tokens_for_paths([])returns 0; is that rendered correctly?ctx_mgr.messagesis[]; themessage_linesblock is skipped; is the "Messages" panel omitted gracefully?metadatamissingcreated_atorlast_updatedkeys —_format_metadata_timestamp(None)returnsNone; the conditional branches are exercised but not tested.OSErrorin_estimate_tokens_for_paths— theexcept OSError: continuepath is untested.--format yaml,--format plain, and--format tablepaths — onlyrichandjsonare tested.8. ❌ API CONSISTENCY REGRESSION — Existing callers emit
"command": ""in envelopesThe
_render_outputsignature was widened withcommand,status,exit_codekwargs now forwarded toformat_output. Butcontext_remove,context_export, andcontext_importcall_render_outputwithout these kwargs — their machine-readable output will emit"command": "". Update all three callers:9. ❌ MISSING CHANGELOG.md ENTRY
No
CHANGELOG.mdupdate in the diff. Per CONTRIBUTING.md, every code-changing PR must include a changelog entry under[Unreleased]:10. ❌ MISSING CONTRIBUTORS.md UPDATE
CONTRIBUTORS.mdis not updated. Per CONTRIBUTING.md, this file must be updated on every PR.Non-Blocking Issues (Strongly Recommended)
robot/actor_context_management.robot. Theshowcommand needs a corresponding Robot test.reportUnknownParameterType. Annotate withbehave.runner.Context._truncate_contentnested two levels deep: Extract to module level for testability.max_messages = 10: Define as_MAX_MESSAGES_PREVIEW: int = 10at module level.actor_context.pydocstring still lists onlyremove,export,import.~1,234); implementation uses~{estimated_tokens}withoutf"{estimated_tokens:,}"formatting.What Is Good
agents actor context show <NAME>matches spec §5978 exactlycontext_summarykey# type: ignoreinactor_context_show.pyregister_show_commandCloses #6369— valid, open, high-priorityType/BugISSUES CLOSEDfooterv3.2.0matches linked issueType/Buglabel appliedSummary
Decision: REQUEST_CHANGES 🔄
This is the fourth review cycle. The head commit has not changed since 2026-04-09. All 10 blocking issues from prior reviews remain open. The three lint failures (issues 1–3) are the most urgent as they directly cause the CI gate failure. The missing error-path test (issue 7) is the most critical from a correctness standpoint — the
err=Truestderr path and the non-existent context branch are completely untested, and multiple additional edge cases (empty context, missing metadata keys, OSError in token estimation) have no coverage.Please address all 10 blocking issues and push a new commit. I will re-review promptly.
Automated by CleverAgents Bot
Reviewer: PR Reviewer | Agent: pr-reviewer
Code Review Decision: REQUEST_CHANGES (Review cycle 4)
PR #6622 —
feat(cli): add actor context show commandThe head commit
fb41c14has not changed since 2026-04-09. All 10 blocking issues from prior reviews remain unaddressed.10 Blocking Issues:
I001: Unsorted import inactor_context.pyUP035:Callablemust come fromcollections.abc, nottypingE501: Two lines exceed 88-char limit (lines 73, 138 ofactor_context_show.py)fmt: str = format_optionassignsOptionInfotostr— useAnnotatedform# pyright: reportRedeclaration=falsein steps file — forbidden by CONTRIBUTING.md_default_context_baselogic duplicated — import and call the existing helpererr=Truestderr path) is completely untested — 97% coverage at riskremove/export/importcallers emit"command": ""in envelopesCHANGELOG.mdnot updatedCONTRIBUTORS.mdnot updatedFull review details in formal review #5490.
Automated by CleverAgents Bot
Reviewer: PR Reviewer | Agent: pr-reviewer
Code Review — PR #6622:
feat(cli): add actor context show commandReviewer: HAL9001 | Commit reviewed:
fb41c14| Review cycle: 5thCI Status
Overall: ❌ FAILING
CI / lintCI / status-checkCI / typecheckCI / unit_testsCI / integration_testsCI / e2e_testsCI / securityCI / qualityCI / build12-Criteria Checklist
CI / lintandCI / status-checkfailingdocs/specification.mdtype:ignoresuppressions# pyright: reportRedeclaration=falsein steps file;fmt: str = format_optiontype mismatchactor_context_show.py= 177 lines; steps file = 492 linesfeatures/(no pytest).feature+ step definitions; no pytestsrc/cleveragents/feat(cli): add actor context show command (#6369)withISSUES CLOSEDfooterCloses #NCloses #6369in body; issue is valid, open,Type/Bugfeature/mN-name,bugfix/mN-name)feat/issue-6369-actor-context-show; should befeature/m3-actor-context-showorbugfix/m3-actor-context-show@tdd_expected_failtag REMOVED@tdd_expected_failtags presentBlocking Issues (Must Fix Before Merge)
1. ❌ CI FAILURE — Ruff
I001: Unsorted import block inactor_context.pyThe new relative import
from .actor_context_show import register_show_commandis placed in the wrong isort section. Fix:Or run
ruff check --fix src/cleveragents/cli/commands/actor_context.py.2. ❌ CI FAILURE — Ruff
UP035:Callablefromtypinginstead ofcollections.abcactor_context_show.pyline 6:Fix:
3. ❌ CI FAILURE — Ruff
E501: Two lines exceed 88-character limitbase = Path(context_dir) if context_dir else Path.home() / ".cleveragents" / "context"(94 chars) — also a DRY violation; fixing issue #6 resolves this.remainingpluralisation (91 chars). Fix:4. ❌ TYPE VIOLATION —
fmt: str = format_optionassignsOptionInfotostractor_context_show.py~line 62:typer.Option(...)returns atyper.models.OptionInfoobject. Pyright strict mode raisesreportAssignmentType. Fix using theAnnotatedpattern used by every other command in this codebase:5. ❌ TYPE SUPPRESSION —
# pyright: reportRedeclaration=falsein steps file (Criterion 3)features/steps/actor_context_cmds_steps.pyline 1:Per CONTRIBUTING.md Type Safety rules, type checking suppressions are forbidden. This is a file-scoped Pyright directive equivalent to a blanket suppression for redeclaration errors. Investigate the root cause; if it is a confirmed Behave false positive, add a project-level
pyrightconfig.jsonoverride scoped tofeatures/and remove this directive.6. ❌ DRY VIOLATION —
_default_context_baselogic duplicatedactor_context_show.pyline 73 reimplements base-directory resolution that already exists as_default_context_base()inactor_context.py. Import and call it:This also fixes the
E501lint error on line 73.7. ❌ MISSING ERROR-PATH TEST — Non-existent context scenario untested
The implementation has an explicit early-exit branch:
No Behave scenario covers this branch. The mandatory 97% coverage threshold will be violated. Add:
8. ❌ API CONSISTENCY REGRESSION — Existing callers emit
"command": ""in envelopesThe
_render_outputsignature was widened withcommand,status,exit_codekwargs now forwarded toformat_output. Butcontext_remove,context_export, andcontext_importcall_render_outputwithout these kwargs — their machine-readable output will emit"command": "". Update all three callers to passcommand=f"agents actor context {subcommand} ...".9. ❌ MISSING CHANGELOG.md ENTRY
No
CHANGELOG.mdupdate in the diff. Per CONTRIBUTING.md, every code-changing PR must include a changelog entry under[Unreleased]:10. ❌ MISSING CONTRIBUTORS.md UPDATE
CONTRIBUTORS.mdis not updated. Per CONTRIBUTING.md, this file must be updated on every PR.11. ❌ BRANCH NAME DOES NOT FOLLOW CONVENTION (Criterion 11)
Branch name:
feat/issue-6369-actor-context-showRequired convention:
feature/mN-nameorbugfix/mN-name(whereNis the milestone number).For this PR targeting milestone
v3.2.0(M3), the correct branch name would be:bugfix/m3-actor-context-show(since the label isType/Bug)The current branch uses
feat/(notfeature/) andissue-6369(not the milestone number). This branch cannot be renamed after the fact without rebasing, but this should be noted for future PRs.Non-Blocking Issues (Strongly Recommended)
robot/actor_context_management.robot. Theshowcommand needs a corresponding Robot integration test.reportUnknownParameterType. Annotate withbehave.runner.Context._truncate_contentnested two levels deep: Extract to module level for testability.max_messages = 10: Define as_MAX_MESSAGES_PREVIEW: int = 10at module level.actor_context.pydocstring still lists onlyremove,export,import— addshow.~1,234); implementation uses~{estimated_tokens}withoutf"{estimated_tokens:,}"formatting.What Is Good
agents actor context show <NAME>matches spec §5978 exactlycontext_summarykey# type: ignoreinactor_context_show.pyregister_show_commandCloses #6369— valid, open, high-priorityType/BugISSUES CLOSEDfooterv3.2.0matches linked issueType/Buglabel appliedSummary
Decision: REQUEST_CHANGES 🔄
This is the fifth review cycle. The head commit has not changed since 2026-04-09. All 11 blocking issues remain open. The three lint failures (issues 1–3) are the most urgent as they directly cause the CI gate failure. The type suppression directive (issue 5) violates criterion 3 directly. The missing error-path test (issue 7) risks the 97% coverage gate. The branch name (issue 11) violates criterion 11.
Please address all 11 blocking issues and push a new commit.
Automated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-review-pool-supervisor
Code Review Decision: REQUEST_CHANGES (Review cycle 5)
PR #6622 —
feat(cli): add actor context show commandThe head commit
fb41c14has not changed since 2026-04-09. All blocking issues from prior reviews remain unaddressed.11 Blocking Issues:
I001: Unsorted import inactor_context.pyUP035:Callablemust come fromcollections.abc, nottypingE501: Two lines exceed 88-char limit (lines 73, 138 ofactor_context_show.py)fmt: str = format_optionassignsOptionInfotostr— useAnnotatedform# pyright: reportRedeclaration=falsein steps file — forbidden by CONTRIBUTING.md (Criterion 3)_default_context_baselogic duplicated — import and call the existing helpererr=Truestderr path) is completely untested — 97% coverage at riskremove/export/importcallers emit"command": ""in envelopesCHANGELOG.mdnot updatedCONTRIBUTORS.mdnot updatedfeat/issue-6369-actor-context-showdoes not follow conventionfeature/mN-nameorbugfix/mN-name(Criterion 11)Full review details in formal review #6248.
Automated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-review-pool-supervisor
Code Review - PR #6622: feat(cli): add actor context show command
Reviewer: HAL9001 | Commit reviewed:
e26e180d| Review cycle: 6thCritical: This is the sixth review cycle. The head commit
e26e180dis a single fix-lint commit on top of the originalfb41c14. It addressed only 2 of the 11 blocking issues from prior reviews. Nine of 11 blocking issues remain completely unaddressed.CI Status: FAILING - CI/lint and CI/status-check are red. Coverage job was skipped.
What Was Addressed (2 of 11):
The commit also moved import shutil from inside context_remove() to top of file and added a blank line before the relative import.
Everything else was left untouched.
Remaining Blocking Issues (9 of 11):
CI FAILURE - Ruff lint still failing
Despite the fix-lint commit, CI/lint is still red. Check the CI log for exact remaining ruff errors. The PR will not merge until lint passes.
TYPE VIOLATION - fmt: str = format_option (UNTOUCHED)
actor_context_show.py line ~70 still reads:
format_option = typer.Option('rich', '--format', '-f', help=format_help)
Then used as: fmt: str = format_option,
typer.Option(...) returns typer.models.OptionInfo, not a str. This is the same issue flagged in every single review since the first. Fix using the Annotated pattern used by all other commands:
fmt: Annotated[str, typer.Option('--format', '-f', help=format_help)] = 'rich'
Then remove the format_option variable entirely.
DRY VIOLATION - _default_context_base duplicated (UNTOUCHED)
actor_context_show.py still independently computes the context base directory instead of using the canonical helper already in actor_context.py. Import and call it:
from .actor_context import _default_context_base
context_base = _default_context_base(context_dir)
API CONSISTENCY REGRESSION - Existing callers emit 'command: empty' (UNTOUCHED)
All three existing commands call _render_output without the new command kwarg: context_remove (both single and --all paths), context_export, context_import. Each will emit command empty string in JSON/YAML output, breaking the spec JSON envelope. Update all callers to pass command=f'agents actor context {subcommand}'.
MISSING ERROR-PATH TEST (UNTOUCHED)
No Behave scenario covers the non-existent context error branch. The mandatory 97% coverage threshold requires all branches tested. Add a regression scenario.
MISSING CHANGELOG.md (UNTOUCHED)
No CHANGELOG.md entry for the new show command.
MISSING CONTRIBUTORS.md (UNTOUCHED)
CONTRIBUTORS.md is not updated.
PYRIGHT SUPPRESSION in steps file (UNTOUCHED)
The fix commit did not touch features/steps/actor_context_cmds_steps.py which still carries a pyright suppression directive. Per CONTRIBUTING.md type safety rules, such suppressions are forbidden.
BRANCH NAME (UNTOUCHED)
Still feat/issue-6369-actor-context-show instead of the convention feature/m3-actor-context-show or bugfix/m3-actor-context-show.
Non-Blocking Suggestions (from prior reviews, still present):
12-Criteria Quick Checklist:
Decision: REQUEST_CHANGES
Only 2 of 11 blocking issues were addressed in this cycle. The PR cannot merge until:
This is the 6th review cycle. The author addressed surface-level lint auto-fix issues but ignored the substantive code quality and architectural concerns identified across all prior reviews.
Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
Automated by CleverAgents Bot
Supervisor: PR Review | Agent: pr-review-worker
[CONTROLLER-DEFER:Gate 1:full_duplicate]
This PR has been deferred for re-evaluation. The controller has stepped back
from processing it. To resume, a human or scope-evaluator must clear the
deferral flag AND re-add the auto/sentinel label.
Decision:
To clear the deferral (SQL):
UPDATE workflows SET deferred_reason=NULL,
deferred_at=NULL,
deferred_target_workflow_id=NULL
WHERE workflow_id = 111;
Audit ID: 16131
Automated by the CleverAgents controller pipeline.
Identity: HAL9000 (pipeline action)
📋 Estimate: tier 1.
New CLI command implementation across 4 files (+288/-9). Three CI gates failing: format (trivial ruff reformat of 2 files), unit_tests (2 Behave scenarios failed + 7 errored — likely import or fixture issues in the new BDD steps), and integration_tests (2 Robot tests failing on unknown-actor-name error handling). The format fix is mechanical but the Behave and Robot failures require cross-file diagnosis — understanding what the tests expect vs what the implementation provides, likely around actor lookup error paths. Multi-file scope with test-fixing burden places this squarely at tier 1.
51d954d1d4d940db6c48d940db6c481cf81f09638b757e8af866f9b27a0b(attempt #11, tier 2)
🔧 Implementer attempt —
rebased.Pushed 1 commit:
66f9b27.✅ Approved
Reviewed at commit
66f9b27.Confidence: high.
Claimed by
merge_drive.py(pid 231638) until2026-06-19T08:11:57.308545+00:00.This claim is advisory and will be released when the cycle ends, or after the TTL by a sibling driver's expired-claim sweep.
Approved by the controller reviewer stage (workflow 111).