Skip to content

chore(logtalk): categorized purge of stale Logtalk/SWI-Prolog references (engine retired → Elixir) #636

Description

@hyperpolymath

Context

The Logtalk/SWI-Prolog rule engine (engine/, ~28 .lgt files) was retired and its logic absorbed into the Elixir ruleset (lib/rules/*.ex) — see docs/architecture/topology.md ("RULES ENGINE (Elixir — absorbed from Logtalk 2026-03-06)"), .machine_readable/6a2/STATE.a2ml (Logtalk purge 2026-04-14), .machine_readable/6a2/NEUROSYM.a2ml (Logtalk removed 2026-04-14). The engine is genuinely gone; Elixir won.

But ~60 files on main still mention logtalk/swi-prolog. A blanket sed is unsafe — the matches fall into very different categories. This issue tracks a categorized cleanup.

Ground-truth the current set with:

git grep -l -iE "logtalk|swi-prolog" origin/main

Triage

(A) Safe to update — stale docs describing Logtalk as a current component. These misdescribe the live architecture and should be rewritten to say the ruleset is Elixir:

  • .github/workflows/ci.yml:3 header comment …Haskell (registry), and Logtalk (engine) (both the Haskell and Logtalk clauses are now dormant/retired)
  • README.adoc, docs/guides/developer-guide.adoc, ROADMAP.adoc, poc-scanner.sh, and the architecture docs that present an engine/ Logtalk runtime as if extant

(B) MUST KEEP — live scanner functionality (do NOT touch).

  • hooks/lib/common.sh — Logtalk language detection for scanned repos (grep -qE '\.(lgt|logtalk)…'). hypatia still scans other repos that may contain Logtalk; removing this breaks the scanner.
  • lib/rules/*.ex — comments/migration facts that legitimately reference the absorbed origin.
  • .machine_readable/6a2/{STATE,NEUROSYM}.a2ml — these document the purge; they should mention Logtalk (as retired history), not be scrubbed.

(C) Owner-gated — do NOT auto-edit (doctrine #4: contractiles/invariants are provisional + supervised).

  • .machine_readable/MUST.contractile:79(must "Logtalk rule engine for error catalog and pattern detection must be preserved"). This is a stale normative invariant that now contradicts the purge. It must be reconciled by the owner (retire or re-point to the Elixir ruleset), not mechanically deleted.
  • .machine_readable/INTENT.contractile — check for the same.

(D) Leave / author's call — scholarly & training artifacts.

  • arcvix-neurosymbolic-ci-intelligence.tex — research paper making a claim about "20 declarative Logtalk/Prolog rules"; that's the author's scholarly record, not stale config.
  • .audittraining/security-errors/*.md — training corpus using Logtalk examples; editing corrupts the data.

Suggested sequencing

  1. Do (A) in one small PR (docs + the two workflow header comments) — low risk, no owner sign-off needed.
  2. Raise (C) to the owner as a discrete decision (supervised contractile edit).
  3. Explicitly do not touch (B)/(D).

Related: #483 (doc + contractile currency pass). This issue is the Logtalk-specific slice of that sweep.

Metadata

Metadata

Assignees

No one assigned

    Labels

    cleanuprdy/readyUnblocked — a bot can start now

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions