Skip to content

docs: add ADR for ft-categories-on-off feature#10

Merged
soraiayugulis merged 1 commit into
mainfrom
docs/ft-categories-on-off-adr
Jun 12, 2026
Merged

docs: add ADR for ft-categories-on-off feature#10
soraiayugulis merged 1 commit into
mainfrom
docs/ft-categories-on-off-adr

Conversation

@soraiayugulis

Copy link
Copy Markdown
Owner

Summary

Adds the full ADR for the ft-categories-on-off feature — specification and implementation plan — before any code is written.

Changes

docs/adr/ft-categories-on-off/specification.md

  • 15 Facts in Given/When/Then format
  • 7 Rules with deterministic input→output mappings
  • 19 Test Cases (TC-001 to TC-019) mapped to Facts and Rules
  • Error codes table with HTTP status
  • Edge cases section
  • Testing strategy using FakeFeatureFlagClient (offline, no ConfigCat SDK key required)
  • Smoke test strategy for validating real SDK when key becomes available
  • GitHub Packages authentication guide for local and CI environments
  • All open questions resolved

docs/adr/ft-categories-on-off/implementation-plan.md

  • 5 sequential phases with declared dependencies and dedicated branches
  • Phase 0 — library integration, GitHub Packages auth, FakeFeatureFlagClient setup
  • Phase 1CategoryStatus enum, Card extension with cascade on deactivate(), BalanceResponse extension
  • Phase 2CATEGORY_INACTIVE authorization rule + MEAL fallback skip logic
  • Phase 3PUT /cards/{cardId}/categories/{category}/status endpoint + card activation support
  • Phase 4@WatchFeatureFlag and @HiFeatureFlag per-method AOP instrumentation
  • Phase 5 — integration tests + ConfigCat smoke test
  • Each sub-task includes target file, steps, test names, and commit message

Notes

  • BalanceResponse record breaking change is documented with exact line references (CardController lines 47 and 62)
  • Card.deactivate() extension (cascade) and new activate() method are scoped to Phase 1
  • No implementation is included in this PR — authorization required after plan review

Checklist

  • Facts and Rules are consistent with each other
  • All Facts are covered by at least one Test Case
  • Phase dependencies are correctly ordered
  • BalanceResponse breaking change impact is understood

@soraiayugulis soraiayugulis self-assigned this Jun 12, 2026
@soraiayugulis soraiayugulis merged commit de6c44e into main Jun 12, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant