Phase 1 - minor fix to Sources page
Quality Gate / gate (push) Failing after 11s

This commit is contained in:
Jim Lancaster
2026-08-20 15:14:34 -05:00
parent 7daa0b9808
commit afd1dba4d4
8 changed files with 165 additions and 28 deletions
@@ -15,4 +15,4 @@ Some who get this book will consider the group picture the best thing in the boo
We are much impressed with the future possibilities of getting a complete geneology [sic] of the Pickard family. Mr. Cochran has a fine chapter on the Pickards but to date we have not had the pleasure of finding all of the family dates. We had intended to give more family data in this book but it takes time to get the correct dates. Often times it requires trips to cemeteries to get dates on the tombstones. Winter is no time to collect dates on tombstones.
~2~
-2-
@@ -3,9 +3,6 @@ provider: openrouter
model: openai/gpt-5.3-codex
---
[document body typeset]
JOHN E. COCHRAN
FAMILY ASSOCIATION
Family Only
Home | Sibling's Stories | 1st Cousins | Ancestor's Stories | Reunion History | Next Reunion | JECMEF
@@ -41,8 +38,7 @@ along the icebergs and the walrus were 'heisted' on board by the use of the cran
tons of freight and the beasts were so huge that they made the pulleys just creak. They were
over 12 feet long, as big around as three cows, had no feet but toenails on their flippers or
flappers, no head but their body just suddenly ended with a hole for a mouth and big bristles
[photograph of people standing in snow]
[photograph inserted at right of paragraph]
all around it similar to a currycomb in coarseness; no ears but huge tusks of ivory. They are
the most repulsive looking animals imaginable and tho I have always read about them I never
expect such disagreeable looking creatures. They had a rough brown hairy skin and some of
@@ -50,8 +46,8 @@ them looked warty. They must have weighed two ton at least. Ere we got them back
to the natives they were getting extremely odiferous—in fact, you could scarcely stay on the
ship with any degree of comfort unless you had per chance lost your sense of smell.
Then we went north to a few minutes beyond the 70th degree of latitude and thot for awhile
we would go to Wrangell Island where some men from Steffonsons ship were supposed to be
Then we went north to a few minutes beyond the 70th degree of latitude and thot [sic] for awhile
we would go to Wrangell Island where some men from Steffonsons [sic] ship were supposed to be
stranded but we didn't get there and instead stopped at a small native village at Cape Serdz in
Siberia. These Eskimo were very primitive. One white squaw man lived there and had for 23
years. He was a Swede--who else could. Their houses were circular and built up with dirt 2 or
@@ -65,16 +61,16 @@ bears with faces. I guess they had never seen white women, not so many at one ti
We went ashore in 2 life boats and a launch pulling them. On the launch was a six piece band
playing and the rear of the last life boat was the movie man. 'Twas very thrilling.
The other place we stopped was at Whalen, a trading post in Siberia. There these 'towerists'[sic]
The other place we stopped was at Whalen, a trading post in Siberia. There these 'towerists' [sic]
went wild. They rushed helter-skelter, hither and thither, here and there, trying to find
something to buy. Prices raised right before your eyes. One would but[sic] something for $1.00
something to buy. Prices raised right before your eyes. One would [buy?] something for $1.00
and the next might have to pay $2.00, $4.00 or $10.00. That made no difference. They had to
have it. One man I was sort of taking care of, tho he had his son along for the purpose,
bought 2 ivory tusks, 1 pup, 2 moccasins, 3 or 4 billikens, 6 or 8 ivory and silver rings, one
fishing line, hooks, floats, etc. and two bird slings. The slings have rocks at the end and the
little natives throw them at the flocks of geese and ducks which fly close over the village and
the slings entangle their wings and legs, sometimes more than one, and they can't fly. They
come down and the natives capture them. There was more junk brot aboard than baggage, I
come down and the natives capture them. There was more junk brot [sic] aboard than baggage, I
do believe. And they say that at the first stop it was worse than here. The red flag was flying
over Whalen and the Russian soldiers were there—a few, one or two or three, I forget the
number.
@@ -83,8 +79,8 @@ We got home yesterday morning at 5 a.m. but missed the first lighter in so had t
until 2:30. The girls had prepared a big meal for us and invited up the Hartfords and then let
us talk. Miss Saville talked quite a bit. Any how if you folks don't like this I don't care, it is
all I had to write about and I know Buster'ud listen anyway and I'd soak ole Peter's head if he
didn't and Polly would [sit] in my lap and I don't know much about the youngest one of yours so
likely he would be squawling. But we did surely enjoy our trip and were gone just long enuf.
didn't and Polly would in my lap and I don't know much about the youngest one of yours so
likely he would be squawling. But we did surely enjoy our trip and were gone just long enuf [sic].
I expect there were 150 passengers on board and almost or more of the crew and helpers. We
had a stateroom down next to the kitchen and 'twas pretty fierce for odor at times.
@@ -117,4 +113,4 @@ Reprinted from Cochran Chronicles, Volume 9, Number 1, November 1986
Up
jecochranclan.org - Contact webmaster
jecochranclan.org ~ Contact webmaster
@@ -5,29 +5,29 @@ model: openai/gpt-5.3-codex
[document body mixed]
JOHN ISBILL R. T. MOSER
ISBILL & MOSER
DEALERS IN
ISBILL & MOSER
DEALERS IN
GENERAL MERCHANDISE
Vonore, Tenn., [handwritten: May 27-] 191[handwritten: 3?]
Vonore, Tenn., [handwritten: Aug 27-] 191[handwritten: 2]
[handwritten: Dear Uncle Aunt & Cousins
[handwritten: Dear [Nuch?] Aunt & Cousin
I was at home a
few nights ago & saw a
letter from your folks, so
I decided to write you
a few lines myself &
am contemplating a
a few lines in regard of
I am contemplating a
trip out west next summer
& want lots of places to go
where I can stop.
& want [lots?] of [places?] to go
where I am [from?].
Am getting
up in years & unmarried,
so you see the object of
my trip, is to get a wife.
up in years & [unmarried?].
So you see the object of
my trip, is to get a wife
If there is any old maid
or widows out there I
want you to [illegible] them
at [illegible] me at them
or widow out there I
want you to [hiev?] them
at one [find?] me at them
as soon as I get there.]
+60
View File
@@ -5,6 +5,7 @@ import warnings
import pytest
import sqlalchemy as sa
from sqlalchemy import inspect
from sqlalchemy import text
from sqlalchemy.dialects import postgresql
from sqlalchemy.exc import SAWarning
from sqlmodel import SQLModel
@@ -16,8 +17,13 @@ from transcription.config import SqliteSettings
from transcription.db import create_all
from transcription.db import dispose_database_runtime
from transcription.db import initialize_database_runtime
from transcription.db import normalize_legacy_status_spellings
from transcription.db import session_scope
from transcription.db.models import Document
from transcription.db.models import DocumentType
from transcription.db.models import Job
from transcription.db.models import JobSource
from transcription.db.models import JobSourceStatus
from transcription.db.models import PersonRole
from transcription.db.models import Source
@@ -151,6 +157,60 @@ async def test_create_all_declares_hot_path_indexes(tmp_path):
await dispose_database_runtime()
@pytest.mark.asyncio
async def test_normalize_legacy_status_spellings_repairs_job_source_status_rows(tmp_path):
settings = Settings(
openrouter_api_key="test-key",
database=SqliteSettings(path=str(tmp_path / "legacy-status.db")),
environment="test",
)
runtime = initialize_database_runtime(settings=settings)
try:
await create_all(engine=runtime.engine)
async with AsyncSession(runtime.engine, expire_on_commit=False) as session:
document = Document(name="legacy-status-doc")
session.add(document)
await session.flush()
job = Job(document_id=document.id)
session.add(job)
await session.flush()
source = Source(
document_id=document.id,
page_number=1,
upload_name="legacy.jpg",
filename="legacy.jpg",
file_path="uploads/legacy.jpg",
file_hash="a" * 64,
file_size_bytes=1,
)
session.add(source)
await session.flush()
job_source = JobSource(job_id=job.id, source_id=source.id, status=JobSourceStatus.PENDING)
session.add(job_source)
await session.commit()
await session.refresh(job_source)
async with runtime.engine.begin() as connection:
await connection.execute(
text('update "job_source" set status = :status where status = :expected'),
{"status": "TRANSCRIBED", "expected": JobSourceStatus.PENDING.value},
)
fixed_rows = await normalize_legacy_status_spellings(engine=runtime.engine)
assert fixed_rows == 1
async with runtime.engine.connect() as connection:
status = (
await connection.execute(
text('select status from "job_source"'),
)
).scalar_one()
assert status == "transcribed"
finally:
await dispose_database_runtime()
def test_metadata_has_no_unresolvable_table_cycle():
"""create_all must be able to order every table, including on PostgreSQL."""
with warnings.catch_warnings():