25 Commits
Author SHA1 Message Date
james.maes 8a8bc4b1e4 docs: session handoff after v0.4.0 release 2026-06-09 10:34:13 -05:00
james.maes c32a65621c docs: changelog for v0.4.0; add RELEASES.md release runbook 2026-06-09 10:17:32 -05:00
james.maes 5f11b5ad38 Merge feature/GH-34-quiet-verbose-flags (#34): remove no-op flags
# Conflicts:
#	CHANGELOG.md
2026-06-09 10:12:19 -05:00
james.maes e116c60b88 Merge feature/GH-29-init-tui-wizard (#29): init full TUI wizard
# Conflicts:
#	CHANGELOG.md
#	cmd/license-tool/commands_test.go
#	docs/SESSION-STATE.md
2026-06-09 10:11:34 -05:00
james.maes 472d78b914 docs: track the six open PRs (#29/#30/#31/#33/#34/#35) and review notes 2026-06-09 09:49:55 -05:00
james.maes 20a0cd0f48 fix(#34): remove the no-op --quiet/--verbose flags
The persistent --quiet/-q and --verbose/-v flags were bound on the root
flag set but read nowhere -- pure no-op flags advertising behavior they
never delivered.

Decision: REMOVE (Option B), not WIRE. A review of every output site
showed there is no non-essential, human-facing output to gate behind
--quiet (the only stdout output is the machine report from audit/check/
apply and essential confirmations like "wrote X"), and no diagnostic or
tracing facility for --verbose to enable (the model's ResolveOptions.
Verbose field is itself dead -- no resolver reads it, nothing writes
diagnostics). Wiring would have required inventing new output purely to
justify the flags, i.e. hollow/cosmetic wiring. Removing the no-ops is
the honest, lower-risk choice for pre-1.0 (v0.3.0).

Passing --quiet/-q/--verbose/-v now yields an unknown-flag usage error
(exit 2). Updated TestNewRootCmd and added TestQuietVerboseFlagsRemoved;
updated README, the design doc, and the CHANGELOG.

The optional LOW item (typed-sentinel refactor of isWriteRefusal) is
deferred: the refusal strings span both internal/applier and
internal/config, so a sentinel refactor would touch the applier
write/refusal path that issue #33 is changing on a separate branch,
risking merge conflicts and cross-package sprawl. Kept this change
scoped to the CLI flag surface.

Closes #34
2026-06-09 08:00:09 -05:00
james.maes 7159bc1b48 docs(#35): close punch list; record review follow-ups and PR readiness 2026-06-09 07:45:58 -05:00
james.maes 3852c9122b fix(#35): harden group risk under --only; review-driven follow-ups
Address findings from a three-agent adversarial review of the GH-35
delta:

- Compute the repo-wide incompatibility set from the full report, not the
  --only-narrowed listing, so a filtered listing can no longer understate
  a group's policy-aware risk. Add groupFilesWith(r, spec, incompatIDs)
  and thread the full-report set through the text/markdown/JSON renderers.
- Use path.Base (not filepath.Base) on the slash-normalized enumerate
  path when matching the config file, for cross-platform correctness.
- Tests: directory-grouping escalation across a mixed bucket, incompat
  beating the headerless-unknown fallback, non-policy tokens not
  escalating, incompatibleIDs cardinality (0/1/3 ids), the filtered-
  listing risk contract, nested/--only config exclusion, no detected-
  license/violation leak on the skipped config, and a check exit-code
  regression guard for the config exclusion.
- Docs: correct the README grouped-output samples (risk markers,
  (no-header) label, JSON group shape) and note the check exit-code
  implication of the config exclusion in README and CHANGELOG.
2026-06-09 07:44:21 -05:00
james.maes 56c3e9410b docs(#35): document self-config exclusion, policy-aware risk, and decisions
README: policy-aware group risk and the .license-tool.yaml exclusion.
CHANGELOG: comprehensive Unreleased entry for the audit reporting overhaul.
DESIGN: post-implementation addenda recording the two new features and the
three audit-flagged items resolved by decision (dep-grouping non-goal,
JSON percentages declined, go.mod not a supported ecosystem).
2026-06-09 07:12:06 -05:00
james.maes b43e362a21 fix(#35): unify (no-header) token, unknown-risk for headerless groups, full JSON under --summary 2026-06-08 14:58:42 -05:00
james.maes 48fd159368 feat(#35): attributable policy violations (which license/rule/file) in all formats 2026-06-08 14:01:30 -05:00
james.maes 6051a36198 docs(#35): spec audit summary + group-by report options 2026-06-08 13:04:49 -05:00
james.maes 32b44e5143 docs(#29): record init redesign completion in session state 2026-06-08 12:34:30 -05:00
james.maes 0031b00eb3 feat(#29): single-form init wizard with adaptive live preview
Replaces the 7-step 3-pane wizard with a single repo-seeded form and a
persistent adaptive preview. wizard.go is now a thin Bubble Tea adapter;
all logic lives in internal/initwizard at 100% coverage.

Closes #29
2026-06-08 12:33:49 -05:00
james.maes bafa2810a6 refactor(#29): unify Answers->Config behind one translator 2026-06-08 11:50:28 -05:00
james.maes 44d4986063 feat(init): add pane-based TUI wizard
Refs #29
2026-06-08 09:28:03 -05:00
james.maes 5a66996d73 docs: refine init tui plan 2026-06-04 16:31:31 -05:00
james.maes cff8435402 docs: plan init tui wizard 2026-06-04 16:27:18 -05:00
james.maes 742c124e6e docs: record local develop merge 2026-06-04 15:08:46 -05:00
james.maes 8c789ce50c docs: record final verification gate 2026-06-04 15:04:41 -05:00
james.maes c63e2514f1 fix: update homebrew release cask 2026-06-04 14:51:28 -05:00
james.maes 03510d13d1 docs: mark audit fixes integrated 2026-06-04 14:29:12 -05:00
james.maes 42a3dada18 docs: expand audit fix scope 2026-06-04 11:59:14 -05:00
james.maes 926e59c0fd docs: plan audit fixes 2026-06-04 11:32:24 -05:00
James Maes 7ebffebae6 feat: license-tool audit + apply with SPDX/REUSE engine and scaffolding 2026-06-03 14:03:50 -05:00