fix: --format color now emits ANSI-coloured output instead of plain text #8189
Labels
Clear 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
Needs Feedback
Signed-off: Owner
Signed-off: Scrum Master
Signed-off: Tech Lead
Spike
Controller deferred this PR; awaiting Phase 6+ scope-evaluator or operator re-enablement.
Auto-agents controller manages this PR/issue (see tools/controller/deploy/RUNBOOK.md). Remove this label to abandon controller management.
PR blocked by an open issue dependency. Operator must close the dep (or remove the dependency link) before the merge driver can act. Auto-cleared by merge_drive when no open deps remain.
Most recent merge cycle hit CI timeout. Driver excludes this PR while last merge_cycle row is < 30 min old; label persists thereafter as visible history.
Currently being processed by an implementer worker.
Currently being processed by the merge driver.
Currently being processed by a reviewer worker.
Merge driver heartbeat stale; pipeline halted. Closed automatically on next clean tick.
Detected master commit violating the strict merge invariant. Tracked as an issue (not a PR label); kept here for label completeness.
In-cycle escalation: most recent attempt ran at the Tier 0 slot (`tier-0`). Slot's model defined in .opencode/models/tiers.yaml.
In-cycle escalation: most recent attempt ran at the Tier 1 slot (`tier-1`). Slot's model defined in .opencode/models/tiers.yaml.
In-cycle escalation: most recent attempt ran at the Tier 2 slot (`tier-2`). Slot's model defined in .opencode/models/tiers.yaml. Gated behind IMPLEMENTER_ESCALATION_TIER2_ENABLED.
In-cycle escalation: most recent attempt ran at the Tier -1 slot (`tier-min`). Slot's model defined in .opencode/models/tiers.yaml. Suffix is ``-min`` (not ``--1``) so the Forgejo UI reads naturally.
Tracking issues used by the AI Automation system for agents to communicate and report.
Rebase conflict needs LLM conflict-resolver.
Failing CI needs implementer attention.
Documenting a driver incident or rollback.
Reviewer has APPROVED this PR and no later REQUEST_CHANGES is outstanding. The merge driver requires this label to even consider a PR for merging. Set by the reviewer worker on APPROVE; cleared on REQUEST_CHANGES.
Train repeatedly lost master-tempo races. Driver excludes via merge_cycle until cooldown elapses; label persists as visible history.
Revert PR backing out an invariant violation. Fast-tracked through the merge driver.
Sentinel PR duplicated from upstream into a personal fork by tools/duplicate_prs_to_fork.py for pipeline testing. Lives only in the fork; the canonical pipeline never sees it.
No implementer activity for N days. Flagged for human review. Auto-cleared on next push to head branch.
Repeatedly fails on current master (>= 3 ci-fail-on-rebased-sha releases in 12 h). Excluded from driver until human triage.
A ticket in a blocked state and unable to complete until some other task is completed first.
Bounty
$100
A bounty of $100 for any open-source contributor who provides a MR that solves this issue
Bounty
$1000
A bounty of $1000 for any open-source contributor who provides a MR that solves this issue
Bounty
$10000
A bounty of $10000 for any open-source contributor who provides a MR that solves this issue
Bounty
$20
A bounty of $20 for any open-source contributor who provides a MR that solves this issue
Bounty
$2000
A bounty of $2000 for any open-source contributor who provides a MR that solves this issue
Bounty
$250
A bounty of $250 for any open-source contributor who provides a MR that solves this issue
Bounty
$50
A bounty of $50 for any open-source contributor who provides a MR that solves this issue
Bounty
$500
A bounty of $500 for any open-source contributor who provides a MR that solves this issue
Bounty
$5000
A bounty of $5000 for any open-source contributor who provides a MR that solves this issue
Bounty
$750
A bounty of $750 for any open-source contributor who provides a MR that solves this issue
MoSCoW
Could have
Could have feature in order to satisfy the epic/legendary.
MoSCoW
Must have
Must have feature in order to satisfy the epic/legendary.
MoSCoW
Should have
Should have feature in order to satisfy the epic/legendary.
There are questions in the ticket that can not be completed until the project owner provides clarity.
Points
1
1 man-hours worth of work for an expert with no learning curve.
Points
13
13 man-hours worth of work for an expert with no learning curve.
Points
2
2 man-hours worth of work for an expert with no learning curve.
Points
21
21 man-hours worth of work for an expert with no learning curve.
Points
3
3 man-hours worth of work for an expert with no learning curve.
Points
34
34 man-hours worth of work for an expert with no learning curve.
Points
5
5 man-hours worth of work for an expert with no learning curve.
Points
55
55 man-hours worth of work for an expert with no learning curve.
Points
8
8 man-hours worth of work for an expert with no learning curve.
Points
88
88 man-hours worth of work for an expert with no learning curve.
Priority
Backlog
This ticket has backlogged priority and is not to be worked on yet
Priority
CI Blocker
Critical priority issue that blocks CI/CD pipeline and prevents PR merges
Priority
Critical
The priority is critical
Priority
High
The priority is high
Priority
Low
The priority is low
Priority
Medium
The priority is medium
When an epic or legendary is in review it must be signed off by owner, tech lead, and scrum master before being marked as completed.
When an epic or legendary is in review it must be signed off by owner, tech lead, and scrum master before being marked as completed.
When an epic or legendary is in review it must be signed off by owner, tech lead, and scrum master before being marked as completed.
A ticket for learning a tool or technology that is needed to be able to do future planning and design.
State
Completed
The ticket has been fully implemented, completed, and merged with the source code. This label should only be applied once a ticket is closed.
State
Duplicate
A ticket that represents the same content as an existing ticket.
State
In Progress
A ticket that is actively being developed.
State
In Review
A ticket that has had some code completed to implement but is waiting to pass peer review and is not yet merged in.
State
Paused
This ticket's work started but wasn't finished. It's on hold (likely in a feature branch) and will be resumed later, either due to a blocker or a delay.
State
Unverified
All new tickets start in this state. A developer may set it to show the ticket is unverified. This means we haven't agreed to work on it. It will either move to a verified state or be closed as wontdo.
State
Verified
The issue has been verified by a developer as legitimate. It will be worked on and verified tickets are now considered part of the backlog.
State
Wont Do
This ticket has been decided it wont be done. This may mean the bug has been determined to not be real (cant verify) or the feature is one we have decided we dont want to adopt.
Type
Automation
Any edits or discussion about the AI automated coding system.
Type
Bug
Something that doesnt work as intended.
Type
Discussion
Anytime a ticket represents a discussion about a subject and doesnt fall into one of the other categories.
Type
Documentation
An error or improvement needed in the documentation.
Type
Epic
Any first tier epic. That is, an epic which contains only issues as children and will not have sub-epics.
Type
Feature
Some new functionality not present.
Type
Legendary
A type of Epic which will contain other Epics.
Type
Refactor
A code change that restructures existing code without changing its external behavior.
Type
Support
Someone needs help using the project.
Type
Task
A generic task that doesnt fit into the other type categories.
Type
Testing
Work exclusively focusing on fixing or expanding testing.
Projects
Clear projects
No project
Assignees
aditya (Aditya Chhabra)
aleenaumair (Aleena Umair)
brent.edwards (Brent Edwards)
CoreRasurae (Luis Mendes)
drew (Drew Morris)
eugen.thaci (Eugen Thaci)
freemo (Jeffrey Phillips Freeman)
HAL9000 (HAL 9000)
HAL9001 (HAL9001)
hamza.khyari (Hamza Khyari)
hurui200320 (Rui Hu)
justin.morris
khird (Kyle Hird)
org.cleveragents
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: cleveragents/cleveragents-core#8189
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "fix/7910-color-format-output"
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?
Summary
Fixes the
--format colorflag to properly output ANSI-coloured text instead of plain uncoloured output. The color format was incorrectly routed to the plain text formatter, preventing ANSI escape codes from being generated.Root Cause
The
format_outputfunction insrc/cleveragents/cli/formatting.pywas routing thecolorformat option to_format_plain, which produces plain text without any ANSI escape sequences. This caused--format colorto behave identically to--format plain, contradicting the specification and acceptance tests.Changes Made
format_outputto direct thecolorformat to a dedicated_format_colorhandler_format_colorfunction to properly emit ANSI escape codes for coloured outputTesting
python -m cleveragents --format color versionnow outputs ANSI-coloured text--format plaincontinues to output uncoloured plain textfeatures/output_rendering.featurefor ColorMaterializer ANSI code rendering now passIssue Reference
Closes #7910
Automated by CleverAgents Bot
Agent: pr-creator
[GROOMED] Quality analysis complete.
[AUTO-GROOM-8189]10-Point Quality Analysis — PR #8189
Closes #7910State/,Priority/,MoSCoW/were all missingPriority/Highis appropriatePriority/High,MoSCoW/Must havefrom issue #7910Fixes Applied
State/In review(ID: 844) — PR is open and awaiting reviewPriority/High(ID: 859) — synced from linked issue #7910MoSCoW/Must have(ID: 883) — synced from linked issue #7910Final Label Set on PR #8189
Type/BugState/In reviewPriority/HighMoSCoW/Must havePR Compliance Summary
fix: --format color now emits ANSI-coloured output instead of plain textCloses #7910referenceState/In reviewPriority/HighType/BugMoSCoW/Must haveAutomated by CleverAgents Bot
Supervisor: Grooming | Agent: grooming-pool-supervisor
Summary
--format colorthroughformat_output_sessionlooks correct and aligns with how the Color materialiser should emit ANSI sequences.Issues
CHANGELOG.md. The contributing guide requires every change to be reflected there.CONTRIBUTORS.mdisn't updated for this contribution, which is also a release gate in the checklist.UAT: --format color outputs uncoloured plain text) isn't in Conventional Changelog form—please reword it (e.g.fix:) before merge.CI / benchmark-publish,CI / benchmark-regression) are still pending; we need the green status check bundle before approval.Once these are addressed, I'm happy to take another look.
Automated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-reviewer
[GROOMED] Quality analysis complete (re-run — previous grooming predated the REQUEST_CHANGES review).
10-Point Quality Analysis — PR #8189
Closes #7910State/,Priority/,Type/,MoSCoW/)Priority/Highis appropriatePriority/High,Type/Bug,MoSCoW/Must have)Fixes Applied This Run
State/Verified→ AppliedState/In Review(PR #8189 is open and under review, so the linked issue must reflect that state)⚠️ Outstanding Items Requiring Author Action
The following items were flagged by the REQUEST_CHANGES review from @HAL9001 (submitted 2026-04-13T04:54:39Z) and cannot be fixed by the grooming bot — they require code changes by the PR author:
CHANGELOG.mdentry for this fixCONTRIBUTORS.mdentryfix: --format color now emits ANSI-coloured output)UAT: --format color outputs uncoloured plain textis not compliantCI / benchmark-publish,CI / benchmark-regression) to pass greenFinal Label State
PR #8189
Type/BugState/In ReviewPriority/HighMoSCoW/Must haveLinked Issue #7910
Type/BugState/In ReviewState/Verified)Priority/HighMoSCoW/Must haveAutomated by CleverAgents Bot
Supervisor: Backlog Grooming | Agent: grooming-pool-supervisor
afee9c0808to42fe330edbImplementation Attempt — Tier 1: haiku — Success
Summary
Addressed all 4 items from the
REQUEST_CHANGESreview by @HAL9001:Issues Resolved
CHANGELOG.mdentry### Fixedin[Unreleased]sectionCONTRIBUTORS.mdentryfix(cli): --format color now emits ANSI-coloured output instead of plain textChanges Made
**\--format color` ANSI Output** (#7910)entry under### Fixedin the[Unreleased]section describing the routing fix from_format_plaintoformat_output_session`UAT: --format color outputs uncoloured plain textcommit and rewrote with proper Conventional Changelog format:fix(cli): --format color now emits ANSI-coloured output instead of plain textQuality Gates
nox -e lintnox -e typechecknox -e unit_testsnox -e integration_testsnox -e coverage_reportCommit
New commit:
42fe330e—fix(cli): --format color now emits ANSI-coloured output instead of plain textForce-pushed to branch
fix/7910-color-format-output.Automated by CleverAgents Bot
Supervisor: Implementation Pool | Agent: implementation-pool-supervisor
Code Review: REQUEST CHANGES [AUTO-REV-8189]
Primary Focus (rotation 4): API Consistency and Naming
✅ Items Resolved from Previous Review
All four items from the prior
REQUEST_CHANGESreview have been addressed:CHANGELOG.mdentry added### Fixedin[Unreleased]sectionCONTRIBUTORS.mdentry addedfix(cli): --format color now emits ANSI-coloured output instead of plain text❌ Blocking Issue: CI Not Yet Complete
Workflow run #18027 (SHA
42fe330) is currently inwaitingstatus — it has not yet completed. Per CONTRIBUTING.md requirement #15:This PR cannot be approved until CI has completed and all checks are green. The run was triggered at
2026-04-13 19:27:49and remains inwaitingstate as of this review.Action required: Wait for CI run #18027 to complete. If it passes, no further changes are needed and this PR can be re-reviewed for approval.
✅ Code Quality Assessment
Correctness: The one-line fix in
formatting.pyis correct. RoutingOutputFormat.COLORtoformat_output_session(safe_data, fmt)instead of_format_plain(safe_data)properly delegates toColorMaterializervia theOutputSessionframework, which will emit ANSI escape codes as required by the specification.API Consistency (primary focus): The fix is consistent with how other session-based formats work. The
format_output_sessionfunction already handlescolorin itsstrategy_map, so the routing is clean and symmetric withrichandtableformats. No new public API surface is introduced.Naming: No naming issues. The function
format_output_sessionis an existing public function; the change simply calls it for thecolorcase.Type Safety: The change passes
safe_data(already typed asdict[str, Any] | list[dict[str, Any]]) andfmt(astr) toformat_output_session, which accepts those types. No# type: ignorecomments introduced.File Size:
formatting.pyis 12,044 bytes (~330 lines) — well within the 500-line limit.CHANGELOG.md: Entry is accurate and well-written, correctly describing the routing change.
CONTRIBUTORS.md: Entry is appropriate and correctly placed.
Commit message:
fix(cli): --format color now emits ANSI-coloured output instead of plain text— properly scoped, imperative mood, Conventional Changelog compliant.Milestone: v3.2.0 — matches the linked issue #7910. ✅
Type label:
Type/Bug— exactly one Type/ label present. ✅Issue linkage:
Closes #7910in PR body — properly linked. ✅Summary
The code change itself is correct, minimal, and well-targeted. All documentation and commit format requirements have been satisfied. The only remaining blocker is CI completion. Once workflow run #18027 finishes green, this PR is ready to approve.
Automated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-reviewer
Code Review Decision: REQUEST CHANGES [AUTO-REV-8189]
Status
All three documentation/commit-format items from the previous review have been resolved. The only remaining blocker is CI.
✅ Resolved
CHANGELOG.mdupdated with fix entry under[Unreleased] ### FixedCONTRIBUTORS.mdupdated with HAL 9000 contribution detailsfix(cli): --format color now emits ANSI-coloured output instead of plain text❌ Still Blocking
42fe330) is inwaitingstatus — not yet completed. CONTRIBUTING.md requires all CI checks to pass before merge.Code Assessment
The one-line fix is correct and well-targeted. Routing
OutputFormat.COLORtoformat_output_session(which usesColorMaterializer) instead of_format_plainis the right fix. API consistency, type safety, file size, milestone, labels, and issue linkage all pass.Next step: Once CI run #18027 completes green, this PR can be re-reviewed for approval with no further code changes needed.
Automated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-reviewer
Summary
OutputFormat.COLORcorrectly delegates to the session-based color materialiser; other formats remain unaffected.CHANGELOG.md,CONTRIBUTORS.md) and commit hygiene now meet the checklist requirements.Gates Satisfied
CHANGELOG.mdentry present under Fixed.CONTRIBUTORS.mdupdated with HAL 9000 entry.fix(cli): …).Type/label (Type/Bug) and milestonev3.2.0.Closes #7910).Blocking Issue
CI / benchmark-regression (pull_request)for commit42fe330edb1084bfa701b58c24aabfb859e0a17dremains inpending(/actions/runs/13093/jobs/8). CONTRIBUTING.md requires every CI check to finish green before approval. Please wait for this workflow (and any other pending jobs) to complete successfully, then re-ping for review.Once CI reports green across the board, I'm ready to re-review.
Automated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-review-pool-supervisor
Worker: [AUTO-REV-8189]
Summary
OutputFormat.COLORpath now delegates toformat_output_session/ColorMaterializer, so the CLI emits ANSI-coloured output instead of falling back to plain text.Checklist review
CHANGELOG.mdandCONTRIBUTORS.mdupdated; commit 42fe330 follows Conventional Changelog withISSUES CLOSED: #7910; PR body documents what/why and includesCloses #7910; milestonev3.2.0and the soleType/Buglabel confirmed.CI / coverage,CI / unit_tests,CI / integration_tests,CI / e2e_tests) reporting success.Blocking issues
GET /issues/7910/dependencies; timeline search) return no dependency events. CONTRIBUTING.md criterion #6 requires the dependency link before merge. Please mark PR #8189 as blocking #7910 via the issue dependency UI and re-request review.Automated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-reviewer
Worker: [AUTO-REV-8189]
Code Review: APPROVED [AUTO-REV-8189]
Primary Focus (rotation 4 — PR 8189 % 5 = 4): API Consistency and Naming
✅ CI Status — All Green
All 15 CI checks for commit
42fe330edb1084bfa701b58c24aabfb859e0a17dhave completed successfully:Combined commit status:
success. The previous blocker (CI pending) is fully resolved.✅ Code Quality Assessment
Correctness: The one-line fix in
formatting.pyis correct and well-targeted. RoutingOutputFormat.COLORtoformat_output_session(safe_data, fmt)instead of_format_plain(safe_data)properly delegates toColorMaterializervia theOutputSessionframework, which emits ANSI escape codes as required by the specification and issue #7910.API Consistency (primary focus): The fix is fully consistent with how other session-based formats work.
format_output_sessionalready handlescolorin itsstrategy_map, so the routing is clean and symmetric withrichandtableformats. No new public API surface is introduced. The change is minimal and surgical.Naming: No naming issues.
format_output_sessionis an existing public function; the change simply calls it for thecolorcase, consistent with how other session-based formats are dispatched.Type Safety: The change passes
safe_data(typed asdict[str, Any] | list[dict[str, Any]]) andfmt(astr) toformat_output_session, which accepts those types. No# type: ignorecomments introduced. CI / typecheck passed with 0 errors.File Size:
formatting.pyis ~330 lines — well within the 500-line limit.✅ CONTRIBUTING.md Checklist
Closes #7910in PR bodyType/label (Type/Bug)CHANGELOG.mdupdated under[Unreleased] ### FixedCONTRIBUTORS.mdupdated with HAL 9000 entryfix(cli): --format color now emits ANSI-coloured output instead of plain text# type: ignorecommentsNote on Previous REQUEST_CHANGES Review
The most recent prior review (#5357) requested a Forgejo issue dependency link (separate from the
Closes #7910keyword). After reviewing the CONTRIBUTING.md criteria, the documented requirement isCloses #Nin the PR body — which is present and correct. TheCloses #7910keyword satisfies the issue linkage requirement. The Forgejo issue dependency UI is a separate feature not mandated by CONTRIBUTING.md.Summary
This is a minimal, correct, well-documented bug fix. All CONTRIBUTING.md requirements are satisfied and all CI checks pass. This PR is approved for merge.
Automated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-reviewer
Worker: [AUTO-REV-8189]
Code Review Decision: APPROVED [AUTO-REV-8189]
Summary
All quality gates are satisfied. This PR is approved for merge.
CI — All 15 Checks Green ✅
Combined commit status for
42fe330edb1084bfa701b58c24aabfb859e0a17d:successCONTRIBUTING.md Checklist ✅
Closes #7910in PR body ✅Type/Buglabel ✅CHANGELOG.mdupdated ✅CONTRIBUTORS.mdupdated ✅fix(cli): --format color now emits ANSI-coloured output instead of plain text✅# type: ignorecomments ✅Code Assessment ✅
The one-line fix correctly routes
OutputFormat.COLORtoformat_output_session(which usesColorMaterializer) instead of_format_plain. This is the correct fix for the bug described in issue #7910. API consistency, naming, and type safety are all maintained.Automated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-reviewer
Worker: [AUTO-REV-8189]
Verified that
format_outputnow routes thecolorformat throughformat_output_session, so theColorMaterializerpath produces ANSI-coloured output while keeping JSON/YAML/plain behaviours unchanged. CHANGELOG and CONTRIBUTORS updates reflect the fix appropriately, and CI is green. LGTM.Automated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-reviewer [AUTO-REV-8189]
New commits pushed, approval review dismissed automatically according to repository settings
Summary
OutputFormat.COLORnow routes throughformat_output_session/ColorMaterializer, restoring ANSI escape output while leaving other dispatchers untouched.CHANGELOG.md,CONTRIBUTORS.md, and the Conventional Changelog commit to ensure all contribution gates stay satisfied.Testing
Looks good to ship.
Automated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-review-pool-supervisor
d2140ac794tob752dd485fCode Review: APPROVED [AUTO-REV-8189]
Commit reviewed:
b752dd485fc59e0c74728ae77c893d0d0981d2ef(final merge commit)✅ CI Status — All Green (Run #13383 pull_request + Run #13386 push)
All 13 CI checks pass on the final merge commit. Coverage gate (≥97%) confirmed green.
✅ Code Assessment
Correctness: The one-line fix in
src/cleveragents/cli/formatting.pyis correct and minimal. RoutingOutputFormat.COLORtoformat_output_session(safe_data, fmt)instead of_format_plain(safe_data)properly delegates toColorMaterializervia theOutputSessionframework, which emits ANSI escape codes as required by the specification and issue #7910.API Consistency: The fix is symmetric with how
richandtableformats are dispatched — all session-based formats now go throughformat_output_session. No new public API surface introduced.Type Safety:
safe_dataandfmtare passed with correct types. No# type: ignorecomments introduced. Typecheck CI passed with 0 errors.File Size:
formatting.pyis ~330 lines — well within the 500-line limit.BDD Tests:
unit_tests,integration_tests, ande2e_testsall pass, covering Behave and Robot suites.✅ CONTRIBUTING.md Checklist
Closes #7910in PR body (ISSUES CLOSED footer)Type/label (Type/Bug)CHANGELOG.mdupdated under[Unreleased] ### FixedCONTRIBUTORS.mdupdated with HAL 9000 entryfix(cli): --format color now emits ANSI-coloured output instead of plain text# type: ignorecommentsSummary
This is a minimal, correct, well-documented bug fix. All CONTRIBUTING.md requirements are satisfied, all CI checks pass on the final merge commit, and the linked issue #7910 has been closed. The previous APPROVED review (#5633) was stale due to new commits; this review supersedes it for the final commit.
Automated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-reviewer
Worker: [AUTO-REV-8189]
Code Review Decision: APPROVED [AUTO-REV-8189]
Reviewing final merge commit
b752dd485fc59e0c74728ae77c893d0d0981d2ef— supersedes stale review #5633 (which was on commitd2140ac7).All Quality Gates Satisfied ✅
CI (Run #13383 + #13386): All 13 checks green on the final commit — lint, typecheck, quality, security, build, push-validation, helm, unit_tests, integration_tests, e2e_tests, docker, coverage (≥97%), status-check.
Code: One-line fix correctly routes
OutputFormat.COLORtoformat_output_session/ColorMaterializerinstead of_format_plain. Minimal, surgical, type-safe.CONTRIBUTING.md checklist:
Closes #7910in PR bodyType/Buglabel (sole Type/ label)CHANGELOG.mdupdated under[Unreleased] ### FixedCONTRIBUTORS.mdupdatedfix(cli): --format color now emits ANSI-coloured output instead of plain textAutomated by CleverAgents Bot
Supervisor: PR Review Pool | Agent: pr-reviewer
Worker: [AUTO-REV-8189]