Skip to content

docs: Status contract drifts between README, DEVELOPER_GUIDE, CLAUDE.md #1452

Description

@Widthdom

Summary

CLAUDE.md "Status Contract" lists 11 trust fields and asserts that README.md and DEVELOPER_GUIDE.md stay in sync. In practice README.md mentions only a subset, DEVELOPER_GUIDE.md mentions a slightly different subset, and nothing enforces the sync claim. Drift will continue silently until someone notices.

Evidence

  • CLAUDE.md "Status Contract" section — enumerates: fold_ready, fold_ready_reason, graph_table_available, issues_table_available, sql_graph_contract_ready, sql_graph_contract_degraded_reason, hotspot_family_ready, hotspot_family_degraded_reason, csharp_symbol_name_ready, csharp_metadata_target_ready, plus degraded_reason/recommended_action/alternative_action in the fold-only path.
  • README.md — mention of status --json and which fields are documented.
  • DEVELOPER_GUIDE.md — same.

Impact

  • New contributors reading any single doc get an incomplete picture of the status JSON contract.
  • The "keep these three docs in sync" claim is informal — there is no test or CI lint that enforces it.

Proposed direction

Pick one:

  1. Lint-style enforcement: Add a small test that loads the field list from one canonical source (e.g. a JSON schema or a static C# struct) and asserts that all three docs mention each field name. The test fails when a field is added without doc updates.
  2. Single source: Reduce the duplicated lists to one canonical doc, and have the other two link to it.
  3. At minimum: Bring README.md and DEVELOPER_GUIDE.md back in sync with CLAUDE.md and add a comment to each saying "if you change this list, update the other two".

Repro env

  • Branch: main @ 2ee912d (release v1.21.0)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions