00Execution

Fix Tags$ default filters and add additive +Column syntax

Issue: sue5t-fix-tags-default-filters-and-add-additive-column-syntax · Generated 2026-06-01 09:40 UTC


01Strategy

Strategy summary

Status: complete. All 9 plan tasks landed. make ci green: 1346 tests pass (10.0s), pylint 10.00/10, mypy clean, black/isort clean, audit script exits 0 for the in-scope set.

Two real bugs fixed and one feature added without backward-compat shims:

  • Default-filter audit: 5 broken Tags-class entries (directconnect tags$, ec2.describe_vpcs Tags$, two redshift Tags$, ecr.describe_images imageTags$) replaced with per-service correct forms. 2 leftover Key$/Value$ entries under redshift deleted.
  • Tags transform case-insensitivity: _is_aws_tags_structure + _transform_aws_tags_list made case-insensitive on member names. Unblocks directconnect, which uses lowercase key/value.
  • Additive +Column syntax: presence of any + in column args keeps defaults and merges all named columns. Strip happens at the top of cli.py::determine_column_filters; merge logic in config.py::apply_default_filters via list(dict.fromkeys(defaults + stripped)).
  • Audit script: scripts/audit_default_filters.py walks every $-suffix entry, simulates flattening + tag-transform, reports anchors that never match. CI-gated via test; 15 additional broken entries surfaced but deferred to a follow-up issue per scope.

02Flow

Task flow & dependencies

01

Task 1

c2614b3

Extend apply_default_filters with additive merge mode

02

Tasks 2+3

6b4bdb1

Add additive +Column CLI syntax for column filters

03

Task 4

a783567

Accept case-variant Key/Value in tags structure detection

04

Task 5

5798818

Fix 5 broken Tags suffix entries in default_filters.yaml

05

Task 6

dd7ff6c

Add shape-aware audit script for default_filters.yaml

06

Task 7

5a3f04e

Add tests for additive +Column, lowercase tags, and audit

07

Task 8

2c264c2

Document +Column additive filter syntax in README

08

Cleanup

3a7cefe

Apply black/isort formatting to touched files

Sequential. Each task verified independently before commit; final make ci ran clean across all 9 commits.


03Decisions

Key decisions & options

Commit message format — user-override of PLAN.md trailer

PLAN.md prescribed the standard Generated with Claude Code trailer. The user's standing preference (memory feedback_no_claude_attribution.md) is that Claude attribution must never appear in commits, code, or files (consultant context). The orchestrator's prompt explicitly overrode the PLAN.md trailer with plain single-line messages and no attribution. All 8 behavioural commits and the EXECUTION.md commit follow this override.

Tasks 2 + 3 combined into one commit — coupling

Task 3 extends _format_columns_copyable with an additive_marks parameter. Task 2's new branch in determine_column_filters calls that extended signature directly. Splitting them produces an intermediate commit that does not type-check. Combined into one atomic feature commit 6b4bdb1; EXECUTION.md tracks both tasks against this hash.

Post-formatting commit — tooling artifact

make format reflowed seven touched files into black/isort canonical form after the per-task commits had landed. The reflow is purely cosmetic (line-wrap differences, no semantic changes) and was committed separately as 3a7cefe so the per-task commits stay focused on their behavioural change.


04Detail

Full detail

Show full artifact source click to expand

05Provenance

Provenance

Generated from the canonical .md. This HTML is never hand-edited — if the .md changes, regenerate with /issue:view.