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
References
Context
This is a focused execution follow-up to #7. A read-only Fable audit of
f643f0c72ce500c6719e52ed8bea8d5456deb150applied 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
specs/file-scoped-requirement-ids.mdmakes 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.tests/test_2119_file_scoped_ids.pyis excluded from normal CI, the 2119 workflow is manually dispatched, and some tests self-skip after adoption.rfc2119gate and both supported requirement-ID grammars. The workflow and upstreamrfc2119suite should remain the canonical enforcement; grammar facts can remain as non-normative Overview notes.--ignore, remove obsolete verdict records, and trim correspondingAGENTS.mdmigration bookkeeping.2. Collapse the alternate-credential-name matrix into the canonical auth boundary
REQ-048.10.1repeatsREQ-035.9.tests/taskservice/test_credential_scoping_spec.pyenumerates 38 channel/name pairs across two valid-header states, producing 76 executions of the same branch.REQ-035.9,REQ-048.10.2and.3, and the distinct browser/CORS cases.REQ-048.10.1cross-referenceREQ-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
REQ-035.13,.35, and.43pin details of a mode that no longer exists, including absence ofX-Panopticon-Permissive-Unauthenticated-Total, and duplicate failure/no-log behavior.disabledandenforcedare accepted; an unrecognized mode fails before serving. Keep one direct test, either under a reworded.13or folded into.49.5..35and.43, remove their redundant tests, and rewrite.13around the positive invariant for invalid auth modes.4. Consolidate
attached-session-image-paste.1.2early-return teststests/sessionservice/test_image_paste_spec.pytests/sessionservice/test_image_paste_prefix_boundaries.pytests/sessionservice/test_image_paste_scope_review.pytests/sessionservice/test_image_paste_nonmatching_review.pytests/sessionservice/test_image_paste_review_gaps.pytest_image_paste_review_gaps.py.Confirmed P2 candidates
5. Remove test-of-test requirements from
REQ-044REQ-044.7repeats floors already specified in.1through.3;.8pins an exact spec sentence. Their tests validate test helpers rather than product behavior..7and.8, their helper-only tests, and duplicate annotations. Consider re-homing.1through.6as verification notes under the owning authentication requirements.6. Consolidate stop-hook turn and timeout requirements
REQ-010,REQ-016, andspecs/stop-hook-turn-before-telemetry.md; tests also pin the same configuration dictionary repeatedly.REQ-016.1.1for bounded input andREQ-010.1.2for the turn outcome.7. Replace per-harness Panopticon norms with one registry-wide requirement
REQ-041.6through.9duplicate Overview delivery once per harness, while existing harness tests already pin the shared Overview verbatim..6through.9with one requirement, annotate the existing harness tests, and deletetests/harnesses/test_panopticon_overview_delivery.py. Optionally merge.1through.5into two content requirements.8. Reduce adversarial-review mutation prose snapshots
specs/adversarial-review-mutations.mdexpands one delivered instruction block into nine proof obligations.tests/workflows/test_spec_2119_mutations.pychecks whole-block equality against copiedTARGETED_MUTATION_INSTRUCTIONS, including a change-freeze requirement.[review].9. Remove whole-document prose equality tests
tests/test_layered_settings_convention.pypins the wholedocs/layered-settings.mddocument, whiletests/test_agents_md.pypins glossary paragraphs and sentences. Product behavior is already specified in layered-settings sections 1 through 6 andREQ-008.1through.6.[review], delete prose-equality tests, and collapse or delete redundant documentation requirements.10. Let the registry-derived standing-credential sweep own xtrace coverage
REQ-035.41and its tests manually enumerate Pi/artifact cases already subsumed by the registry-derivedREQ-044.3sweep.REQ-035.21.REQ-035.41and the hand-picked duplicate tests, then attach the relevant annotations to the sweep.Follow-up investigations
REQ-035.36,.45, and.48into one liveness-holder 401/403 termination requirement and cross-annotate the three existing behavioral tests.REQ-035.49.1, which is a meta-requirement about other requirements rather than product behavior.REQUIREMENT REMOVEDplaceholders inREQ-010andREQ-012as tooling-required tombstones. Do not delete them blindly; preserve 2119 ID stability.tests/conftest.pyif no supported caller still needs it.tests/test_release_automation.pyfor replacement with behavioral assertions.AGENTS.mdmigration bookkeeping when candidate 1 lands.REQ-044.1through.6as verification notes if their security invariants remain canonical elsewhere.Delivery constraints
Acceptance criteria
References
f643f0c72ce500c6719e52ed8bea8d5456deb150