Skip to content

[BUG] architecture_decisions check is case-sensitive — misses docs/ADRs/ #379

@Dharit13

Description

@Dharit13

Bug Description

The architecture_decisions assessor reports 0/100, no ADR directory found on repos that follow the docs/ADRs/ (capital A) or docs/Adr/ naming convention. The candidate-directory list in the assessor is case-sensitive, so common capital-letter variants are missed even when ADRs are clearly present.

To Reproduce

Steps to reproduce the behavior:

  1. Clone a repo with ADRs at docs/ADRs/ (capital A). Concrete example:
    git clone https://github.com/fullsend-ai/fullsend /tmp/fullsend
    cd /tmp/fullsend && git checkout cba01190
    ls docs/ADRs/    # 11 ADR files
  2. Run agentready assess .
  3. See architecture_decisions ❌ FAIL — no ADR directory (need: ADR directory with decisions) in the output.

Expected Behavior

The assessor should detect the ADR directory regardless of case (adr, ADR, Adr, ADRs, Adrs) and pass, since 11 numbered ADRs (0001-…md through 0010-…md) are present and follow the Michael Nygard format the remediation guidance recommends.

Actual Behavior

Reports 0/100 with evidence No ADR directory found (checked docs/adr/, .adr/, adr/, docs/decisions/). The capitalised variants are not in the candidate list.

Environment

  • OS: macOS 25.4.0 (Darwin arm64)
  • Version: agentready 2.31.2
  • Python Version: 3.12

Additional Context

docs/ADRs/ and docs/Adrs/ are common conventions — they appear in repos that consider ADRs first-class artifacts and want them to sort visually with other capitalised top-level docs (README.md, CONTRIBUTING.md).

Capital-A variants also surface in template-driven repos derived from common ADR scaffolds.

Possible Solution

Two options:

  1. Case-insensitive directory match — match docs/adr* regardless of case. Lowest effort; risks matching unrelated dirs like docs/adr-discussion/ if they exist.
  2. Expand the candidate list to include docs/ADRs/, docs/ADR/, docs/Adr/, docs/Adrs/. Explicit and safer; needs maintenance if new conventions appear.

(2) is probably the right call — it preserves the existing precision while covering the realistic capitalisation patterns.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions