Skip to content

Remove confirmed requirement and test accretion from Fable audit #15

Description

@ncrmro

Context

This is a focused execution follow-up to #7. A read-only Fable audit of f643f0c72ce500c6719e52ed8bea8d5456deb150 applied the anti-accretion rubric from Unsupervisedcom/2119#39 to Panopticon itself.

This is a ranked removal map, not a deletion quota. Every change must preserve the canonical behavior, security boundary, public interface, compatibility promise, or historical regression evidence that remains valuable.

Confirmed P1 candidates

1. Retire the file-scoped adoption spec and test layer

  • Current accretion: specs/file-scoped-requirement-ids.md makes CI commands, migration bookkeeping, and guidance prose normative. Sections 1, 2, 5, and 6 plus requirements 3.5, 3.6, 4.5, and 4.6 are the main candidates.
  • Evidence: tests/test_2119_file_scoped_ids.py is excluded from normal CI, the 2119 workflow is manually dispatched, and some tests self-skip after adoption.
  • Retain: the exact pinned rfc2119 gate and both supported requirement-ID grammars. The workflow and upstream rfc2119 suite should remain the canonical enforcement; grammar facts can remain as non-normative Overview notes.
  • Proposed negative diff: delete or demote the normative migration sections, remove the dedicated test and its CI --ignore, remove obsolete verdict records, and trim corresponding AGENTS.md migration bookkeeping.

2. Collapse the alternate-credential-name matrix into the canonical auth boundary

  • Current accretion: REQ-048.10.1 repeats REQ-035.9. tests/taskservice/test_credential_scoping_spec.py enumerates 38 channel/name pairs across two valid-header states, producing 76 executions of the same branch.
  • Retain: the bearer-only authentication checks under REQ-035.9, REQ-048.10.2 and .3, and the distinct browser/CORS cases.
  • Proposed negative diff: make REQ-048.10.1 cross-reference REQ-035.9, delete the redundant matrix, and annotate the existing query/cookie probes with the retained requirement.

3. Remove requirements that specify the absence of a retired permissive-auth mode

  • Current accretion: REQ-035.13, .35, and .43 pin details of a mode that no longer exists, including absence of X-Panopticon-Permissive-Unauthenticated-Total, and duplicate failure/no-log behavior.
  • Retain: only disabled and enforced are accepted; an unrecognized mode fails before serving. Keep one direct test, either under a reworded .13 or folded into .49.5.
  • Proposed negative diff: delete .35 and .43, remove their redundant tests, and rewrite .13 around the positive invariant for invalid auth modes.

4. Consolidate attached-session-image-paste.1.2 early-return tests

  • Current accretion: seven tests across five files exercise the same early-return branch:
    • tests/sessionservice/test_image_paste_spec.py
    • tests/sessionservice/test_image_paste_prefix_boundaries.py
    • tests/sessionservice/test_image_paste_scope_review.py
    • tests/sessionservice/test_image_paste_nonmatching_review.py
    • tests/sessionservice/test_image_paste_review_gaps.py
  • Retain: three distinct input shapes: no prefix, prefix with an empty probe, and prefix with a superset/other-name exact-match case. In each case, prove capture is never called. Keep the real tmux proof for requirement 1.1.
  • Proposed negative diff: replace the seven tests with one parametrized test, delete the three review-named files, and remove the duplicate 1.2 annotation from test_image_paste_review_gaps.py.

Confirmed P2 candidates

5. Remove test-of-test requirements from REQ-044

  • Current accretion: REQ-044.7 repeats floors already specified in .1 through .3; .8 pins an exact spec sentence. Their tests validate test helpers rather than product behavior.
  • Retain: discovery-derived boundary sweeps and meaningful minimum floors.
  • Proposed negative diff: delete .7 and .8, their helper-only tests, and duplicate annotations. Consider re-homing .1 through .6 as verification notes under the owning authentication requirements.

6. Consolidate stop-hook turn and timeout requirements

  • Current accretion: turn semantics and the three-second timeout are duplicated across REQ-010, REQ-016, and specs/stop-hook-turn-before-telemetry.md; tests also pin the same configuration dictionary repeatedly.
  • Retain: REQ-016.1.1 for bounded input and REQ-010.1.2 for the turn outcome.
  • Proposed negative diff: consolidate or remove stop-hook requirements 3.1 and 3.2 and delete duplicate tests/config snapshots.

7. Replace per-harness Panopticon norms with one registry-wide requirement

  • Current accretion: REQ-041.6 through .9 duplicate Overview delivery once per harness, while existing harness tests already pin the shared Overview verbatim.
  • Retain: one registry-wide delivery invariant, covered by the existing per-harness integration points.
  • Proposed negative diff: replace .6 through .9 with one requirement, annotate the existing harness tests, and delete tests/harnesses/test_panopticon_overview_delivery.py. Optionally merge .1 through .5 into two content requirements.

8. Reduce adversarial-review mutation prose snapshots

  • Current accretion: specs/adversarial-review-mutations.md expands one delivered instruction block into nine proof obligations. tests/workflows/test_spec_2119_mutations.py checks whole-block equality against copied TARGETED_MUTATION_INSTRUCTIONS, including a change-freeze requirement.
  • Retain: the instruction-bearing directives and the dispatch/gate behavior.
  • Proposed negative diff: consolidate requirements 1.3 through 1.9 and 1.11; replace the full snapshot with bounded directive checks or semantic review; delete 1.10; retag documentation requirements 2.1 and 2.2 as [review].

9. Remove whole-document prose equality tests

  • Current accretion: tests/test_layered_settings_convention.py pins the whole docs/layered-settings.md document, while tests/test_agents_md.py pins glossary paragraphs and sentences. Product behavior is already specified in layered-settings sections 1 through 6 and REQ-008.1 through .6.
  • Retain: the executable settings behavior and a semantic review obligation for documentation accuracy.
  • Proposed negative diff: retag documentation requirements as [review], delete prose-equality tests, and collapse or delete redundant documentation requirements.

10. Let the registry-derived standing-credential sweep own xtrace coverage

  • Current accretion: REQ-035.41 and its tests manually enumerate Pi/artifact cases already subsumed by the registry-derived REQ-044.3 sweep.
  • Retain: the derived standing-credential sweep and the positive Pi-delivery behavior under REQ-035.21.
  • Proposed negative diff: delete REQ-035.41 and the hand-picked duplicate tests, then attach the relevant annotations to the sweep.

Follow-up investigations

  • Merge REQ-035.36, .45, and .48 into one liveness-holder 401/403 termination requirement and cross-annotate the three existing behavioral tests.
  • Remove or rewrite REQ-035.49.1, which is a meta-requirement about other requirements rather than product behavior.
  • Review REQUIREMENT REMOVED placeholders in REQ-010 and REQ-012 as tooling-required tombstones. Do not delete them blindly; preserve 2119 ID stability.
  • Retire the filename-keyed compatibility shim in tests/conftest.py if no supported caller still needs it.
  • Review YAML substring pins in tests/test_release_automation.py for replacement with behavioral assertions.
  • Delete the related AGENTS.md migration bookkeeping when candidate 1 lands.
  • Re-home REQ-044.1 through .6 as verification notes if their security invariants remain canonical elsewhere.

Delivery constraints

  • Land small, comprehensible PRs; do not combine all candidates into one rewrite.
  • Consolidate requirements before deleting the tests and helpers that cite them.
  • Map every removed obligation to a retained canonical invariant and its evidence.
  • Preserve security/authentication boundaries, public interfaces, stored-data compatibility, and meaningful historical regression coverage.
  • Collapse equivalent matrices only after targeted mutation or equivalent branch evidence demonstrates that the smaller suite detects the behavior.
  • Report before/after collected-test count, unique test-body count, skip count, and runtime for each PR where applicable.
  • Remove obsolete helpers, fixtures, annotations, and verdict records with their owning requirement.
  • Keep repository checks and the pinned RFC 2119 gate green.

Acceptance criteria

  • Each confirmed candidate lands in a small reviewed PR or receives an evidence-backed rejection recorded here.
  • Every deleted requirement/test maps to a retained canonical invariant.
  • No security, public-interface, compatibility, or historical-regression coverage is weakened.
  • Equivalent test matrices have targeted mutation or branch-equivalence evidence before consolidation.
  • Each implementation PR reports its before/after test and runtime measurements.
  • Obsolete support artifacts are removed alongside the requirement or test they served.
  • All repository and RFC 2119 gates pass after each change.

References

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions