Stabilize finding model #28

Merged
pdurlej merged 1 commit from codex/wave3-finding-model into codex/wave2-agent-context-format 2026-05-17 01:11:45 +02:00
Collaborator

Canary Context Pack

Product story

Agents need stable issue identity before fallow-ts grows classification, baselines, and CI gates. A finding should survive copy edits without changing its identity.

What changed

  • Adds a shared finding model with fingerprint and structured location.
  • Keeps legacy path / line fields for low-churn compatibility.
  • Computes SHA-256 fingerprints from canonical rule, location, and evidence payloads.
  • Updates agent-context output and schema docs.

Why it changed

Wave 3 needs stable finding contracts before classification buckets and baseline filtering can be safely layered on top.

Files touched

  • src/types.ts
  • src/analyze.ts
  • src/index.ts
  • src/format.ts
  • docs/report-schema-v0.md
  • tests/analyze.test.mjs

Runtime evidence

  • npm run build
  • npm test
  • node dist/cli.js analyze --root . --format json --output /tmp/fallow-ts-report.json
  • git diff --check

Known constraints

This does not add new analyzer categories. Existing finding rules remain unchanged.

Explicit out-of-scope

Classification buckets, likely-unused-export, baseline filtering, and CI templates are subsequent Wave 3 PRs.

Requested decision

Approve if the finding identity contract is stable and docs/tests match the implementation.

Merge blockers

  • Fingerprints depend on unstable human-readable text.
  • JSON shape contradicts docs/report-schema-v0.md.
  • Existing finding behavior changes beyond the added metadata.

Closes #12.

## Canary Context Pack ### Product story Agents need stable issue identity before fallow-ts grows classification, baselines, and CI gates. A finding should survive copy edits without changing its identity. ### What changed - Adds a shared finding model with `fingerprint` and structured `location`. - Keeps legacy `path` / `line` fields for low-churn compatibility. - Computes SHA-256 fingerprints from canonical `rule`, `location`, and `evidence` payloads. - Updates agent-context output and schema docs. ### Why it changed Wave 3 needs stable finding contracts before classification buckets and baseline filtering can be safely layered on top. ### Files touched - `src/types.ts` - `src/analyze.ts` - `src/index.ts` - `src/format.ts` - `docs/report-schema-v0.md` - `tests/analyze.test.mjs` ### Runtime evidence - `npm run build` - `npm test` - `node dist/cli.js analyze --root . --format json --output /tmp/fallow-ts-report.json` - `git diff --check` ### Known constraints This does not add new analyzer categories. Existing finding rules remain unchanged. ### Explicit out-of-scope Classification buckets, likely-unused-export, baseline filtering, and CI templates are subsequent Wave 3 PRs. ### Requested decision Approve if the finding identity contract is stable and docs/tests match the implementation. ### Merge blockers - Fingerprints depend on unstable human-readable text. - JSON shape contradicts `docs/report-schema-v0.md`. - Existing finding behavior changes beyond the added metadata. Closes #12.
Stabilize finding model
Some checks failed
CI / test (push) Failing after 14s
CI / test (pull_request) Failing after 13s
4aea3d67f7
Closes #12.

Verified:

- npm run build

- npm test

- node dist/cli.js analyze --root . --format json --output /tmp/fallow-ts-report.json

- git diff --check
codex requested review from claude 2026-05-17 00:43:53 +02:00
pdurlej merged commit 06dca74b09 into codex/wave2-agent-context-format 2026-05-17 01:11:45 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pdurlej/fallow-ts!28
No description provided.