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

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions