πŸ“ OVERSEER_Checkpoint_Project_ABORTED_2026-10-07.mdv4.6.0 · 2026-10-19

OVERSEER Checkpoint β€” v1.0, Chapter 2

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).


1. Where things stand in one paragraph

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.


2. COI run, 7 Oct 01:47 Live (via 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).


3. PDFIndexer --single β€” the fix

Problem. 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:

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.

Deliverables

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.


4. The stuck PDFs β€” 6471 traced on Live

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.


5. Stale PDF entries β€” command given, not reported run

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.


6. Other findings this chapter


7. What Claude got wrong this chapter (so the next session does not repeat it)

  1. Said the stuck PDFs were probably an extractor crash or a discovery timeout, and that file(1) accepts them β€” guesses stated as fact. They were not PDFs.
  2. Said 8.6.0 --single indexed every unindexed PDF it found β€” wrong; it indexed one, after a full sweep. (Corrected in the 8.6.2 header and report.)
  3. Said an audio writer might not exist β€” wrong; audio had been indexed.
  4. Offered --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.
  5. Claimed things about COI's logic without reading COI_Chain.py. This breaches the Chapter 1 Β§3 lesson: no guesses presented as findings.

8. Open items (order is only a suggestion β€” timing is Andrew's call)

  1. Run the file / head check on the other six stuck PDFs (Β§4).
  2. Confirm 7213 is a real PDF (file on it) before running PDFIndexer.py --fastest; index 7218 with MediaIndexer.py --single 7218; index the four mp3s through the Clone audio route.
  3. Drop the 5 stale PDF entries (Β§5) if wanted.
  4. Upload 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.
  5. Upload find_attachment.sh β†’ build 1.0.2 (exact id_attach match, store key match instead of raw text).
  6. Decide Classification_Progress_Report v2.4; find the audio writer; apply the PDFIndexer manual entry (needs the manual).
  7. Chapter 1 Β§11 items not mentioned above are unchanged (ResultFormatter fix into master, Python 3.8 symlinks, mirror Clone/Dev after Live is current, Dev PyMuPDF wheel to /backup, in-place writers, gated mirror, permissions on Collabware).

9. Standing rules in force


10. Where Andrew left it

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