📝 SMF_Batch_checkpoint_2026-10-23.mdv4.6.0 · 2026-10-19

SMF Batch — checkpoint, 2026-10-23 (16:19 Sydney)

For pasting/uploading into a fresh chat. Facts only; things I did not verify are marked UNVERIFIED.

1. Problem & Resolution

Goal (Andrew). "SMF Batch": the batch-run counterpart to his SMF mods — same structure, Package Manager managed, but kept separate from the interactive mods because of long execution times. First target: the whole attachment corpus, attachments and attachments2 treated as ONE corpus (never dissociated except when reporting). Start with a report: every attachment in chronological, date-stamped order with every available metric, plus the post(s) hanging off each. Display through listatt. PHP or Python per job, whichever suits.

Decisions made

What was built (current)

Latest deliverables (use these)

Lineage (superseded; for reference) SMFBatch_v1.0.0.zip (worker + old viewer in Sources/SMFBatch/) → listatt_bbcode_v6.22.zip (viewer merged, worker in Sources/SMFBatch/) → listatt_bbcode_v6.23.zip + attach_report_v1.0.0.zip (worker to Collabware) → 6.24 + attach_report_v1.0.1.zip (worker to CollabCore).

Status on Andrew's systems

2. Risk Analysis

Tested. On a throwaway MariaDB 10.11 with 15 fake attachments across two directories, run under PHP 8.3: chronology, all flags, orphans, duplicates, unicode names, ordered stop, lock, resume (including mid-run), JSON endpoints, SQL-injection attempts on sort/flag (rejected), guest refusal, no-report case, and a headless-browser render of the viewer with no script errors.

NOT tested / UNVERIFIED

3. Code Change

Files, versions and where they live:

File Version Location after install
attach_report.php 1.0.0 Sources/CollabCore/ (package attach_report 1.0.1)
SMFBatch_manual.md 1.0.3 Sources/CollabCore/
listatt_report.php 1.0.2 Sources/ (listatt 6.24)
ListAttBBC.php 6.24 Sources/ — the only existing file touched: doc-block entry, VERSION, one added INFO-panel link line
package-info.xml (listatt) 6.24 2.0 and 2.1 install/uninstall blocks both updated; listatt_posts.php, listatt_dupes.php, view_attach*.php untouched

Build notes: zips built with Python zipfile (no streaming data descriptors, verified); xmllint --noout passed on both package-info.xml. Andrew's legacy zipper was NOT used (not available to me); he must rezip if he wants it exact.

4. Open items / next steps

  1. Andrew runs the worker on Live and sends the console summary; compare it with what the report page shows. Check the printed directory listing against his real layout first.
  2. Read the flags (missing, wrong folder, size mismatch, duplicates, no post) — they decide the next jobs.
  3. Wrap the existing tools as batch jobs one at a time, same stop/resume/lock behaviour: PDF indexer, PDF duplicate spotter, media indexer, bulk [listatt] inserter.
  4. Optional: fold the worker into the next Collaborative release, but only against his CURRENT Collaborative zip (not v6.0). He said where it lives is "neither here nor there", so only do this if he asks.
  5. Not built: any BBCode tag for the report (the INFO link covers it); a start button on the report page (long runs stay on the command line).
  6. The worker re-implements physical-path resolution that AttachMeta.php already has; possible later reuse, but he said leave AttachMeta.php alone.

5. Standing rules observed this session (from Andrew)

Reply header with real Sydney time (casual mode); no sycophancy; statements over questions; critique BEFORE building; list any change he did not ask for BEFORE making it (I failed this twice and listed afterwards — do it first); no manual edits to SMF files (Package Manager only); never rename his files; zip with dotted never-reused version; @version/@date bumped and manual history entry on every change; version shown when a program runs; xmllint on XML; release card at the end of each delivery including "legacy zipper used"; ordered shutdowns only, never kill; expand acronyms; don't assert unverified facts as fact.