Period: 2026-10-06 β 2026-10-07 (checkpoint taken 07/10/2026 ~07:01 AEDT) Participants: Andrew.human & Claude.ai Follows: OVERSEER_Checkpoint_2026-10-05.md (Chapter 1) and DM2S-NX_v10_0_Checkpoint_2026-10-05.md (context)
Live's clock is 3 hours behind Sydney (e.g. Live 01:53 = 04:53 AEDT).
COI's count of NOT-INDEXED lines fell from 75 to 14 and ENTRY-NO-ROW from 6 to 5 between the 6 Oct and 7 Oct runs; NO-OWNER stayed at 47 (SMF's territory, D1). PDFIndexer.py --single was fixed (rejects non-PDFs, runs one and exits) and is delivered as 8.6.2; Live is running 8.6.1 (its banner showed v8.6.1 on 7 Oct). Tracing stuck PDF 6471 on Live showed it is not a PDF at all β file says XHTML document text β so the indexer was right and COI's NOT-INDEXED line for it is a false positive. The other six stuck PDFs are unverified. Nothing in this chapter was deployed by Claude; every change to Live was Andrew's to make. Andrew ended the session by shutting down, frustrated at the time spent and doubting whether the indexing or the checks can be trusted.
coichecks)Last run (/backup/coi_20261006-1045.txt) |
Now | |
|---|---|---|
| ENTRY-NO-ROW | 6 | 5 |
| NO-OWNER | 47 | 47 |
| NOT-INDEXED | 75 | 14 |
The 14 NOT-INDEXED lines:
| Store | Attach | Name | What it is |
|---|---|---|---|
| media_store | 7218 | Love-and-Music.jpg | new upload, not yet indexed (file: JPEG) |
| audio_store | 7204, 7206, 7210, 7214 | fuckthat.mp3, Frankie.mp3, The Sensuous Black Woman Part 1 vs.mp3, Love-and-Music.mp3 | new uploads, not yet indexed |
| pdf_store | 7213 | 'DM2S_NX' β¦ Chapter 3 PARTIAL.pdf | new upload; not confirmed to be a real PDF |
| pdf_store | 6471 | A Review of Brain-Computer Interface Gamesβ¦pdf | not a PDF β XHTML (confirmed, Β§4) |
| pdf_store | 6474, 6645, 6656, 6668, 6680, 6690 | Drug-related Sleep Stage Changes_β¦pdf | stuck since before 5 Oct; unverified, likely the same as 6471 |
| misc_store | 5461 | Groq.json | stuck since 5 Oct, untraced |
The 5 ENTRY-NO-ROW (pdf_store, attachment no longer in SMF): 6970, 7033, 7041, 7049 (from 5 Oct) and 7048 (new since 5 Oct β another PDF was deleted from the forum). These are genuine stale entries: the indexers only add and never remove.
Gone since 5 Oct: the 50 missing media entries and stale entry 2963 (a plain MediaIndexer.py run evidently happened), and the 5 missing audio entries (6941, 6954, 7105, 7107, 7118 β audio was indexed and pushed). Not checked: whether embeddings_store.json / captions_store.json still hold 2963 (COI 1.0.2 does not look).
--single β the fixProblem. Andrew ran PDFIndexer.py --single 7218 (a JPEG). 8.6.0 printed its trace, then ran the full discovery sweep (file(1) on every attachment, minutes on Live), indexed only the requested attachment if it was a PDF, and rewrote both stores even for a non-PDF. Andrew's two requirements: reject non-PDF files; --single means run one and exit.
Resolution. 8.6.2 checks the attachment with file(1) first. Not a PDF, or no such file β prints REJECTED, exits 1, loads no index, writes nothing. A real PDF β indexed on its own, merged into pdf_store.json / word_index_pdf.json, exit. No sweep.
Risk / compatibility. Tested in a sandbox (Python 3.13, generated PDFs, stub PDFsearch), comparing 8.6.0 against 8.6.2 on identical trees:
--fast, --fastest, --fresh, --dry-run, --limit, --start-at, --monitor, --attach-dir, --checkpoint-every, the three refused combinations, --help): exit code, output and store md5s identical (the --help text differs only in the --single description).--single on a PDF, a re-index, a scanned PDF, a JPEG and an absent id: stores identical in all five.main() and VERSION changed; trace_single() added.--single now exits 1 (was 0); in --single mode the Scanningβ¦, Found N real PDFsβ¦ and selected by discovery lines are no longer printed; a rejected --single no longer rewrites the stores. Nothing known uses --single in cron or MegaIndexer.sh.vermin): minimum Python 3.6 for both files. Not run on Python 3.6 or on Live's real DB.--single 6471; it traced, printed REJECTED, and wrote nothing. That is the reject path working on Live. The accept path has not been run on Live.Code change. PDFIndexer.py @version 8.6.0 β 8.6.2, @date 2026-10-07. 8.6.1 and 8.6.2 have identical code; 8.6.2 only corrects the 8.6.1 history text, which wrongly said 8.6.0 --single indexed every unindexed PDF it found (it indexed only the one attachment, after the sweep).
Not fixed, noticed: stores written by a run as root come out root:root (chown apache:apache afterwards); re-processing an already-indexed id never removes that attachment's old word entries.
| File | State |
|---|---|
PDFIndexer_v8.6.1.zip |
superseded β inaccurate history note |
PDFIndexer_v8.6.2.zip |
PDFIndexer.py 8.6.2, PDFIndexer_8.6.2_DIFF_REPORT.pdf, PDFIndexer_8.6.0_to_8.6.2.diff, MANUAL_ENTRY_PDFIndexer_v8.6.2.md |
Release card for 8.6.2: version/date bumped β done; manual history entry β missing (text supplied, the manual was not available); version printed at start β done; dotted never-reused zip β done; xmllint β not needed; unasked changes β none.
| Check | Result |
|---|---|
| SMF row | id_attach 6471, id_msg 49584, attachment_type 0, id_folder 2, size 231969, filename "A Review of Brain-Computer Interface Games and an Opinion Survey from Researchers, Developers and Users.pdf" |
| Disk | /var/www/html/attachments2/6471_50aa53932eee13b1786485efd3ed87ed649c524e, 231969 bytes, Sep 16, apache:apache |
file |
XHTML document text (version 1.0) |
PDFIndexer.py --single 6471 |
NOT a PDF by file(1) β REJECTED |
So 6471 is a web page saved or uploaded with a .pdf name. PDFIndexer decides by file contents; COI 1.0.2 evidently decides by the .pdf extension in SMF's database (inferred β COI_Chain.py was not read this chapter). I have not seen the file's contents.
Still to run (not yet reported):
file /var/www/html/attachments*/{6474,6645,6656,6668,6680,6690}_*
head -c 400 /var/www/html/attachments2/6471_*
If any says "PDF document", that one is a real indexer problem. If all say XHTML/HTML, all seven stuck lines are mislabelled uploads.
What 1.0.3 should do: classify by content. Chapter 1 Β§5 already lists "pdf_store β file: file really is a PDF by content". A .pdf that is not a PDF becomes its own finding ("named .pdf, content is XHTML"), not NOT-INDEXED. What to do about the files themselves (broken uploads; they will not open in the forum's PDF viewer) is Andrew's call.
A guarded command was given to drop 6970, 7033, 7041, 7048, 7049 from pdf_store.json and word_index_pdf.json: refuses to run while a PDFIndexer is running, gzips both files into /backup first, writes by temp file and rename, then chown apache:apache. Expected output pdf_store entries removed: 5. Tested on copies of stores in the indexer's own format only; not run on Live as far as this chapter shows. A proposed --prune option for PDFIndexer (drop entries whose attachment has no SMF row) was not built and not approved.
webp + 2 3gp + 1 not in DB (2963). So the driver embeds and captions thumbnails and avatars, and the report's inventory excludes them. The totals do not reconcile: 1739 done + 926 unexplained = 2665 against 2809 embedded keys (gap 144, unexplained). Proposed v2.4 (denominator from the store, categories as rows) β Andrew did not decide. Also answers an OVERSEER Β§5 open point: thumbnails are in media_store, so COI's rule should expect them.grep -l "audio_store" /bin/* /var/www/html/Collabware/*/*.py found only /bin/mirror1.sh, /bin/mirrorISE_Clone, COI_Chain.py and test_COI_Chain.py β mirror scripts and COI, no script that writes the store. A wider search (grep -rl "audio_store" /var/www/html /root /opt --include=*.py --include=*.sh) was given; no result reported. Audio was in fact indexed and pushed between 5 and 7 Oct.media_store: COI's design requires every audio_store entry to also exist in media_store; what media_store holds for audio (metadata only, per 1 Sep notes) was not confirmed on Live.find_attachment.sh v1.0.1 (a script Andrew ran; its source was not seen): for 6471 it returned the wrong DB row (1357, an avatar whose filename avatar_1755_1453964718.jpg contains the digits "6471"), then checked the disk for 1357, and its store section counts raw "6471" text, so hits inside embedding numbers and file_size: 16471 are noise (1731 and 1816 hits). Only useful line: pdf_store.json 0 hit(s). Not fixed β needs the script uploaded. The three exact commands (SMF row, ls, file) replace it for now.MiscIndexer.py conversion still outstanding β the copy in ISE_Atomic_Writers_v1.0.0.zip is stale, Live has 7.5.0; (b) a plain MediaIndexer.py run can write {} over media_store.json if the DB query fails (v9.9.3 safeguard unapproved) β a plain run appears to have happened regardless; (c) COI in the daily cron should wait until all four writers are converted and deployed.file(1) accepts them β guesses stated as fact. They were not PDFs.--single indexed every unindexed PDF it found β wrong; it indexed one, after a full sweep. (Corrected in the 8.6.2 header and report.)--single 7213 as a quick option when --single still swept the whole disk (corrected in the same session). Also said I had given Andrew the PDF command for 7218, a JPEG; I had not β my table listed MediaIndexer.py for 7218.COI_Chain.py. This breaches the Chapter 1 Β§3 lesson: no guesses presented as findings.file / head check on the other six stuck PDFs (Β§4).file on it) before running PDFIndexer.py --fastest; index 7218 with MediaIndexer.py --single 7218; index the four mp3s through the Clone audio route.COI_Chain.py (Live) so its PDF rule can be read, then build COI 1.0.3: drop SMF-territory checks (D1), classify PDFs by content, read Settings.php itself, add the media β embeddings β captions pairs (D4). Still needed from Andrew: one entry per store, embeddings/captions file sizes.find_attachment.sh β build 1.0.2 (exact id_attach match, store key match instead of raw text).PDFIndexer manual entry (needs the manual)./backup, in-place writers, gated mirror, permissions on Collabware).Andrew's own words at close: little faith in what is in the JSON, so either the indexing or the checks must be wrong; a feeling that the system is a house of cards where every look at the code finds more bugs; the system seems stable; he is shutting the session down. What this chapter's evidence shows: the two faults actually traced to a cause (stuck 6471, the wrong find_attachment.sh row) were in the checking and helper tools, not in the stores; the stale pdf_store entries and the new-upload gaps are real but ordinary; only one of the seven stuck PDFs is verified. Whether to continue OVERSEER is Andrew's decision.
OVERSEER Checkpoint 2026-10-07, ~07:01 AEDT