garrytan and afshaker
97d4e58dcc
A1: verify gbrain landing before stamping transcripts, plus --reconcile
...
gbrain import exits 0 while skipping pages (returned per-file failures,
malformed filenames, managed-import Pending receipts), and its failure
ledger exists only for git import dirs, so a skipped page was stamped
ingested and never retried (field reports: 37 and 69 lost entries).
Write, verify, then stamp (lib/memory-ingest-landing.ts, a new ratcheted
module):
- State schema 2 with a transition table (staged -> imported_unverified ->
ingested, plus refused, quarantined, unrecoverable). Schema 1 files
migrate in place: entries become ingested in the legacy "default"
source and a reconcile pass is marked pending.
- Named failures come from --json `failures`, stderr "Skipped <rel>:"
lines and the ledger; a failure gbrain does not attribute refuses the
whole batch. After 3 refused batches the batch is bisected and the page
that poisons it is quarantined (printed even under --quiet).
- Landing check: one `gbrain list --source-id` per source per run and at
most 50 `gbrain get --json` content checks against a
gstack_content_sha256 frontmatter field gstack now writes. Lookup errors
and pglite_busy mean "not yet checked", never absent; pages over the cap
stay imported_unverified and are not re-imported.
- Each entry records its gbrain source_id. Remote-http mode records
"staged", never "ingested".
- The source fingerprint comes from the exact bytes parsed, so a
transcript that grows during import is not stamped as its newer self
(the old unscanned contract test is migrated; it pinned that bug).
- --reconcile mode (bounded by --limit, default 200; resumable; --dry-run;
backs up the state file) prints "reconcile: checked N, present M,
re-queued K, not yet checked L". --request-reconcile records a pending
pass without calling gbrain; the v1.91.17.0 migration (placeholder name)
uses it, and the next ingest run does one bounded pass.
- One lock for every state writer; a state-save failure fails the run.
The #1802 static pins in regression-1611 move to the new structure
(remote-http returns before importBatch; the finally honors
preserveStaging).
Co-authored-by: afshaker <andrew@phone2.io >
2026-10-03 21:08:29 +00:00
..
2026-08-29 10:10:35 -07:00
2026-10-03 01:19:03 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-03 01:19:03 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-02 11:11:00 -07:00
2026-10-02 11:11:00 -07:00
2026-08-14 09:28:56 -07:00
2026-09-14 15:14:58 -07:00
2026-10-02 11:11:00 -07:00
2026-08-14 22:02:07 -07:00
2026-10-03 07:54:09 -07:00
2026-08-16 19:34:41 -07:00
2026-04-19 05:44:39 +08:00
2026-10-01 11:57:48 -07:00
2026-05-29 08:35:00 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-10-03 07:54:09 -07:00
2026-10-01 11:57:48 -07:00
2026-10-03 01:19:03 -07:00
2026-10-03 01:19:03 -07:00
2026-10-03 01:19:03 -07:00
2026-10-03 01:19:03 -07:00
2026-08-29 10:10:35 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-03 07:54:09 -07:00
2026-09-14 14:32:45 -07:00
2026-10-03 07:54:09 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-10-01 13:55:16 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-01 13:55:16 -07:00
2026-10-01 13:55:16 -07:00
2026-10-01 13:55:16 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-10-01 13:55:16 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-02 11:11:00 -07:00
2026-10-03 07:54:09 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-10-01 13:55:16 -07:00
2026-10-03 07:54:09 -07:00
2026-10-03 07:54:09 -07:00
2026-09-14 14:32:45 -07:00
2026-10-03 01:19:03 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 15:14:58 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-25 13:27:07 -04:00
2026-10-01 13:55:16 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-08 22:40:22 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-03 07:54:09 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-10-01 13:55:16 -07:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-10-01 13:55:16 -07:00
2026-09-14 14:32:45 -07:00
2026-10-01 13:55:16 -07:00
2026-10-03 01:19:03 -07:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-10-03 01:19:03 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-10-01 13:55:16 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-25 13:27:07 -04:00
2026-09-22 14:57:52 -04:00
2026-09-29 08:58:49 -07:00
2026-09-08 22:40:22 -07:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-09-08 22:40:22 -07:00
2026-09-08 22:40:22 -07:00
2026-09-08 22:40:22 -07:00
2026-09-08 22:40:22 -07:00
2026-09-08 22:40:22 -07:00
2026-10-03 21:08:29 +00:00
2026-09-24 01:53:58 -04:00
2026-09-24 01:53:58 -04:00
2026-09-24 01:53:58 -04:00
2026-09-24 01:53:58 -04:00
2026-09-24 01:53:58 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-10-01 11:57:48 -07:00
2026-09-22 14:57:52 -04:00
2026-10-03 01:19:03 -07:00
2026-05-26 16:50:03 -07:00
2026-05-28 18:21:09 -07:00
2026-06-08 21:17:18 -07:00
2026-08-15 09:37:04 -07:00
2026-08-27 09:50:31 -07:00
2026-09-06 08:54:25 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-22 14:57:52 -04:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-25 13:27:07 -04:00
2026-09-24 17:27:14 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-09-22 14:57:52 -04:00
2026-10-03 01:19:03 -07:00
2026-09-22 14:57:52 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-10-01 13:55:16 -07:00
2026-09-22 14:57:52 -04:00
2026-10-03 07:54:09 -07:00
2026-03-14 07:17:17 -05:00
2026-03-14 07:17:17 -05:00
2026-03-14 07:17:17 -05:00
2026-09-29 06:07:35 -07:00
2026-09-29 06:07:35 -07:00
2026-09-29 06:07:35 -07:00
2026-09-29 06:07:35 -07:00
2026-09-29 06:07:35 -07:00
2026-09-29 06:07:35 -07:00
2026-09-22 14:57:52 -04:00
2026-10-02 11:11:00 -07:00
2026-08-29 10:10:35 -07:00
2026-03-30 22:07:50 -06:00
2026-03-30 22:07:50 -06:00
2026-08-29 10:10:35 -07:00
2026-09-29 06:07:35 -07:00
2026-09-22 14:57:52 -04:00
2026-10-01 13:55:16 -07:00
2026-03-17 20:12:55 -05:00
2026-09-08 22:40:22 -07:00
2026-03-17 20:12:55 -05:00
2026-03-16 01:45:50 -05:00
2026-03-16 01:45:50 -05:00
2026-03-14 01:17:36 -05:00
2026-09-26 18:57:53 -04:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-14 14:32:45 -07:00
2026-09-25 12:06:45 -04:00
2026-09-24 17:27:14 -04:00
2026-09-29 06:07:35 -07:00
2026-09-29 06:07:35 -07:00
2026-09-29 06:07:35 -07:00
2026-10-01 13:55:16 -07:00
2026-09-24 01:53:58 -04:00
2026-09-29 06:07:35 -07:00
2026-09-25 13:27:07 -04:00
2026-09-24 01:53:58 -04:00
2026-10-01 13:55:16 -07:00
2026-10-01 13:55:16 -07:00
2026-09-24 01:53:58 -04:00
2026-09-25 13:27:07 -04:00
2026-09-24 01:53:58 -04:00
2026-09-24 01:53:58 -04:00
2026-09-14 14:32:45 -07:00
2026-10-03 01:19:03 -07:00
2026-09-25 13:27:07 -04:00
2026-09-22 14:57:52 -04:00