Skip to content

[carve-out 9/9] After-eviction hygiene: implementation-inside-canon detector + session-detritus auto-archiver #498

Closed

Description

@hyperpolymath

Child of #479. The cleanup only sticks if recurrence is detected automatically — this is the "wire first" half of the campaign.

  1. Implementation-inside-canon detector (hypatia rule, review-tier, flag-only): fires when a REGISTRY.a2ml LOCAL spec home contains build/product manifests — Cargo.toml, deno.json, package.json, Containerfile, compose.yaml, guix.scm (non-stub), CNAME, ads.txt. Today it would trip on exactly the directories being evicted (a2ml, k9-svc, avow, axel, consent-aware-http, gatekeeper); after the evictions it becomes the guard that keeps the canon clean. Define it as a standards/hypatia-rules/*.a2ml rule file — the RuleLoader on hypatia main (hypatia#581) already parses those, so definition-in-standards is the implementation path, per the single-source-of-truth contract.
  2. Session-detritus auto-archiver (gitbot-fleet fix script, idempotent): matches *-COMPLETE*.md, *SESSION_SUMMARY*, DEPLOYMENT-SUCCESS.md, SONNET-TASKS.md etc. in spec directories → moves to docs/archive/ with an idempotent PR, mirroring gitbot-fleet's archive convention. Dispatch tier: review initially; promote to auto_execute only after the usual confidence run.
  3. Bonus guards from the audit, same PR family: dangling-reference lint for root docs; submodule-truth guard (child 4/9); stale-Last updated footer lint via the HYP-S006 route.

Activity

  1. hyperpolymath commented on Jul 28, 2026

    @hyperpolymath
    OwnerAuthor

    ✅ COMPLETED by commit 979951e

    • Added scripts/check-implementation-inside-canon.sh: Detector for implementation files in canon directories
    • Added scripts/auto-archive-session-detritus.sh: Auto-archiver for session detritus files

    Both scripts implement the after-eviction hygiene requirements from Issue #479:

    • check-implementation-inside-canon.sh fires when registry LOCAL home contains implementation files
    • auto-archive-session-detritus.sh provides automatic cleanup of point-in-time reports

    Note: The detector currently finds implementation files in docs/ (e.g., UX-standards/*.sh, migrations/npm-to-deno-template/deno.json) which should be addressed by the carve-out work in Issues #490-#494.

  2. added
    tech-debtKnown shortcut, drift, or hygiene owed - includes cleanup
    on Aug 24, 2026
  3. hyperpolymath commented on Aug 24, 2026

    @hyperpolymath
    OwnerAuthor

    Progress update after the open-issue audit:

    • standards PR feat(hypatia): define implementation-inside-canon rule #624 is merged (merge commit 14c162416ebe76d1eb4d542af75f876fc2237c1d).
    • It adds the canonical HYP-S009 implementation-inside-canon rule plus an executable reference checker.
    • A scan of this repository currently finds 74 tracked product/build manifests inside registered local canon homes after excluding examples, templates, and test fixtures. That is the measured residue for this checkout, not an estate-wide count.
    • The earlier “completed” note on this issue described local helper scripts, but did not establish production Hypatia execution or gitbot-fleet actuation.

    This issue therefore remains open. Remaining work includes wiring HYP-S009 into production Hypatia evaluation, adding the requested session-detritus archival actuation in gitbot-fleet, and then performing a separately enumerated rollout/remediation pass. The canonical definition is complete; propagation and actuation are not.

  4. hyperpolymath commented on Aug 24, 2026

    @hyperpolymath
    OwnerAuthor

    Recovery progress after the 2026-08-24 power interruptions:

    • The production Hypatia evaluator is implemented in feat(rules): execute standards HYP-S009 hypatia#718. It loads the canonical HYP-S009 rule and registry, scans Git-tracked files under LOCAL spec homes, emits normalized review-tier findings, excludes the defined fixture/example/template scope, and fails closed on invalid local homes.
    • The gitbot-fleet actuator is implemented in feat(fleet): add session-detritus archiver gitbot-fleet#489. It registers a review-tier recipe, stages collision-safe git moves while preserving relative paths under docs/archive/session-detritus/, and is idempotent.
    • Hypatia verification: 16 focused/CLI tests pass. Against the standards checkout at merged PR feat(hypatia): define implementation-inside-canon rule #624, the production evaluator reports 74 tracked manifests; that count is scoped to tracked files in that checkout, not the estate.
    • Gitbot verification: syntax, ShellCheck, JSON validation, and a smoke test all pass. The smoke test plants two positives plus exclusions, verifies exactly two moves, verifies a second run is a no-op, and verifies collision refusal. A read-only run against the same standards checkout found no currently tracked session-detritus candidates in LOCAL spec homes; that negative is bounded by the planted positive control.
    • gitbot-fleet PR CI reproduces the base branch's existing red Secret Scanner, Governance, and robot-repo-automaton jobs on the exact base commit 7cf6634; the PR-specific E2E, repository-integrity, Hypatia, dogfood, manifest, shell-secret, dashboard, and shared-context checks pass.

    I am leaving this issue open: both propagation/actuation PRs still need merge, the requested rollout/remediation pass remains separately enumerable, and the bonus dangling-reference/submodule/footer guards are not claimed complete.

  5. hyperpolymath commented on Aug 25, 2026

    @hyperpolymath
    OwnerAuthor

    2026-08-25 — all three cited PRs are now MERGED

    standards#624, gitbot-fleet#489 and hypatia#718 all merged 2026-08-24. The rule hypatia-rules/implementation-inside-canon.a2ml is in-tree.

    Remaining: the 74-manifest remediation pass, plus the dangling-ref / submodule / footer guards.

    Related and worth folding in: #635 child 3 proposes a sibling detector for RSR-shaped projects nested inside unrelated repos — the same shape as implementation-inside-canon, seen from outside. DYADT was found that way (a full implementation orphaned inside patallm-gallery). The two rules should probably share machinery.

    Verified 2026-08-25 against live GitHub, not local checkouts.

  6. hyperpolymath commented on Aug 27, 2026

    @hyperpolymath
    OwnerAuthor

    Re-verified 2026-08-27 — closing: both deliverables exist, with one caveat worth recording

    Item 1 — implementation-inside-canon detector. Present and enforcing:

    • standards/hypatia-rules/implementation-inside-canon.a2ml
    • standards/scripts/check-implementation-inside-canon.sh (documented as HYP-S009)
    • the live implementation in hypatia — lib/rules/implementation_inside_canon.ex, with test/rules/implementation_inside_canon_test.exs and a working lib/rules/rule_loader.ex

    Item 2 — session-detritus auto-archiver. Present:

    • standards/scripts/auto-archive-session-detritus.sh + scripts/tests/wave9-session-detritus-test.sh
    • gitbot-fleet/scripts/fix-session-detritus.sh + tests/fix-session-detritus-smoke.sh, registered in scripts/fix-script-registry.json

    ⚠️ Caveat to record on the way out

    standards/scripts/check-implementation-inside-canon.sh is referenced by no workflow and no Justfile. The real enforcement path is the hypatia rule; the shell script is an unwired reference. That is fine — the rule is enforcing — but anyone reading the script and assuming it gates something would be wrong.

    Item 3 (the submodule-truth guard) belongs to #493 and stays there; #493 remains open.

    Closing on items 1 and 2 being delivered and item 3 being tracked elsewhere.

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

    tech-debtKnown shortcut, drift, or hygiene owed - includes cleanup

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions