featureparity 0.0.16 → 0.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -146,6 +146,12 @@ an existing promise is a contradiction signal: decide which promise reflects pro
146
146
  then record that decision with `fp propose-change` or `--removal`. Do not weaken the test or add
147
147
  a second requirement around the conflict; ask a human when product intent is unclear.
148
148
 
149
+ Existing tests are protected product evidence. Flag any intended edit to a test that backs
150
+ passing evidence; if its expected behaviour would change, wait for explicit human approval of
151
+ the requirement change before editing it. A new requirement does not supersede a pre-existing
152
+ failing test merely because the requirement was drafted or activated. Surface that conflict and
153
+ do not change or adopt the old test as proof without explicit human approval.
154
+
149
155
  ```bash
150
156
  fp propose --project stowzilla \
151
157
  --slug current_shipment_status \
@@ -295,6 +301,60 @@ item says FeatureParity cannot determine the activity; a linked work item with n
295
301
  explicitly says no requirement changes were recorded. Generated `fp init` workflows configure
296
302
  both outputs before the parity gate.
297
303
 
304
+ ### fp changed-tests
305
+
306
+ List every unresolved audit finding for a bound test whose source fingerprint differs from
307
+ the accepted revision. The queue is independent of the testcase's passing/failing/stub outcome
308
+ and from `suspect` evidence caused by changed requirement wording.
309
+
310
+ ```bash
311
+ fp changed-tests # project from .featureparity.yml
312
+ fp changed-tests --project stowzilla --surface api
313
+ fp changed-tests --json # complete machine-readable queue
314
+ ```
315
+
316
+ Each finding includes the current requirement and acceptance rule, surface and optional test
317
+ type, testcase and CI outcome, isolated-test or labelled whole-file fingerprint scope, and the
318
+ accepted and candidate fingerprints, commits, source locations, and links.
319
+
320
+ After comparing those exact revisions with the requirement, an authorized agent records a
321
+ plain-language assessment:
322
+
323
+ ```bash
324
+ fp changed-tests assess <finding-id> \
325
+ --candidate-fingerprint <sha256> \
326
+ --classification still_proves \
327
+ --explanation "The refactor changes setup only; the same observable result is asserted."
328
+ ```
329
+
330
+ Classifications are `still_proves`, `no_longer_proves`, and `uncertain`. `still_proves`
331
+ resolves only the supplied candidate fingerprint; if it came from a PR, that exact fingerprint
332
+ becomes the accepted baseline only after a default-branch CI report observes it. The other two
333
+ classifications remain open for a human product decision. A stale candidate is rejected, and a
334
+ later fingerprint always requires a new assessment. Assessing never changes the requirement
335
+ wording or CI outcome.
336
+
337
+ #### Upgrading an existing project
338
+
339
+ Changed-test auditing requires fp 0.0.17 or newer and the corresponding backend deployment.
340
+ Hosted-project users do not migrate project data or configuration.
341
+
342
+ ```bash
343
+ gem update featureparity
344
+ fp version # 0.0.17 or newer
345
+ ```
346
+
347
+ Fresh CI jobs that run `gem install featureparity` automatically pick up the release; update
348
+ any Bundler or install-command pin explicitly. Keep the existing `fp ci-report` call and run it
349
+ once on the default branch: the upgraded CLI sends source receipts automatically, and that run
350
+ lazily establishes accepted baselines without a backfill. Report trusted pull requests with
351
+ `--pr <url>` to open findings before merge while preserving the default-branch baseline.
352
+
353
+ The workflow recipe generated by fp 0.0.17 shows both paths. Adapt an existing customized
354
+ workflow manually. `fp init --force` overwrites `.featureparity.yml` and the generated workflow,
355
+ so reserve it for unmodified generated files, preserve the original project/surface options,
356
+ and review the resulting diff.
357
+
298
358
  ### fp matrix
299
359
 
300
360
  Display the parity matrix. Cells show the state of the evidence filed for each
@@ -398,7 +458,7 @@ fp init --project stowzilla --dir path/to/repo
398
458
  | File | Purpose |
399
459
  |------|---------|
400
460
  | `.featureparity.yml` | declares the project slug, so `--project` becomes optional |
401
- | `.github/workflows/feature-parity.yml` | the CI gate and PR requirement-change summary |
461
+ | `.github/workflows/feature-parity.yml` | the CI gate, PR requirement-change summary, and adaptable PR/default-branch reporting recipe |
402
462
  | `AGENTS.md` (appended) | instructions telling agents to mark and report their tests |
403
463
 
404
464
  Existing files are skipped unless `--force`. The `AGENTS.md` section is appended between
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: featureparity
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.16
4
+ version: 0.0.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stowzilla
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-10-12 00:00:00.000000000 Z
11
+ date: 2026-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-http
@@ -97,9 +97,11 @@ files:
97
97
  - lib/fp/commands/attach.rb
98
98
  - lib/fp/commands/attachments.rb
99
99
  - lib/fp/commands/base.rb
100
+ - lib/fp/commands/changed_tests.rb
100
101
  - lib/fp/commands/changes.rb
101
102
  - lib/fp/commands/check.rb
102
103
  - lib/fp/commands/ci_report.rb
104
+ - lib/fp/commands/comment.rb
103
105
  - lib/fp/commands/config_cmd.rb
104
106
  - lib/fp/commands/conversation.rb
105
107
  - lib/fp/commands/export.rb
@@ -124,6 +126,7 @@ files:
124
126
  - lib/fp/output.rb
125
127
  - lib/fp/parity.rb
126
128
  - lib/fp/project_config.rb
129
+ - lib/fp/source_fingerprint.rb
127
130
  - lib/fp/version.rb
128
131
  - skills/fp/SKILL.md
129
132
  - skills/fp/references/cli.md