Integration fix: Feature 12 feature-review findings F1-F8 #95

Member

Maestro task 5037ff86-181d-448e-927b-c2fd2258a25d.

Fixes all eight findings from the independent Codex feature review of #94 at exact head
171c9c2d11df3a5a9089b4429f8c26b9640b1fe0 (review_agent REQUEST_CHANGES). Commits authored
by dev_agent (Claude Code, isolated worktree); this pull request record was opened on the
developer's behalf by orchestrator-agent because the developer session had no non-owner
Gitea identity.

  • F1 (HIGH): 1304487 clears a pending Regular's recipe_url when it is renamed, so the
    fresh job grounds the new name. Its test now also asserts the old link is never grounded.
  • F2 (HIGH): each ground_dinner job carries grounding_revision (migration 0010); a
    rename raises it, and a stale job does no work and cannot write.
  • F3 (MED): background grounding keeps method/minutes/difficulty a member set while pending.
  • F4 (MED): grounding by hand clears recipe_url; duplicate-link checking uses the attached
    recipe's source link (or the pasted link if none is attached yet).
  • F5 (MED): archived dinners are skipped before any external call, and the final update
    requires an unarchived row.
  • F6 (MED): onboarding step 3 offers "Add Regulars" back to step 2 when the server refuses
    completion with fewer than three Regulars.
  • F7 (LOW): common picks filtered by a TypeScript copy of harness Normalize/Similar, held to
    shared cases with the Go code.
  • F8 (LOW): docs/ARCHITECTURE.md documents the three-Regular minimum, the step-3 recovery
    and the new grounding rules.

Checks: gofmt -l . empty; go vet ./...; go test -race -count=1 ./...; CGO_ENABLED=0 go build ./...; make sqlc-check; cd web && npm run typecheck && npm test && npm run build

  • all pass.
Maestro task `5037ff86-181d-448e-927b-c2fd2258a25d`. Fixes all eight findings from the independent Codex feature review of #94 at exact head `171c9c2d11df3a5a9089b4429f8c26b9640b1fe0` (review_agent REQUEST_CHANGES). Commits authored by dev_agent (Claude Code, isolated worktree); this pull request record was opened on the developer's behalf by orchestrator-agent because the developer session had no non-owner Gitea identity. - F1 (HIGH): `1304487` clears a pending Regular's `recipe_url` when it is renamed, so the fresh job grounds the new name. Its test now also asserts the old link is never grounded. - F2 (HIGH): each `ground_dinner` job carries `grounding_revision` (migration 0010); a rename raises it, and a stale job does no work and cannot write. - F3 (MED): background grounding keeps method/minutes/difficulty a member set while pending. - F4 (MED): grounding by hand clears `recipe_url`; duplicate-link checking uses the attached recipe's source link (or the pasted link if none is attached yet). - F5 (MED): archived dinners are skipped before any external call, and the final update requires an unarchived row. - F6 (MED): onboarding step 3 offers "Add Regulars" back to step 2 when the server refuses completion with fewer than three Regulars. - F7 (LOW): common picks filtered by a TypeScript copy of harness Normalize/Similar, held to shared cases with the Go code. - F8 (LOW): `docs/ARCHITECTURE.md` documents the three-Regular minimum, the step-3 recovery and the new grounding rules. Checks: `gofmt -l .` empty; `go vet ./...`; `go test -race -count=1 ./...`; `CGO_ENABLED=0 go build ./...`; `make sqlc-check`; `cd web && npm run typecheck && npm test && npm run build` - all pass.
orchestrator-agent added 2 commits 2026-10-06 19:31:09 -04:00
A Regular added from a recipe link stores recipe_url, and its grounding job
grounds that link. Renaming the dinner while still pending kept the link, so
the job queued for the new name still attached the old link's recipe and
photo. UpdateDinner now sets recipe_url, and renaming a pending dinner
clears it: the fresh job grounds the new name by search, and the household
can give a link by hand to fix up the recipe if they want a specific one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fix Feature 12 review findings F2–F8 on Regular grounding and onboarding
CI / ci (pull_request) Successful in 2m29s
CI / ci (push) Successful in 2m21s
837c9924d1
Grounding (F2–F5):
- Each ground_dinner job carries the dinner's new grounding_revision
  (migration 0010). Renaming a pending Regular raises the revision, and a
  job only grounds and writes a dinner still at its revision, so a queued
  original job no longer grounds the new name or decides the outcome.
- Background grounding keeps a method, minutes or difficulty a member saved
  while the Regular was pending, and fills only those left empty.
- Grounding by hand clears the pasted recipe_url, and link deduplication
  uses the source_url of the attached recipe, else the pending link.
- Archived dinners are not grounded: the job checks before any search,
  fetch or model call, and its final update requires an unarchived row.

Onboarding (F6, F7):
- Step 3 shows "Add Regulars" back to step 2 when the server refuses to
  finish with fewer than three Regulars.
- Common picks are hidden by a copy of harness Normalize/Similar, checked
  against the same shared cases as the Go code.

Docs (F8): ARCHITECTURE.md covers the three-Regular minimum, step-3
recovery, the grounding revision and the dedupe rules.

F1 was fixed in 1304487; its test now also asserts the old link is never
grounded and recipe_url stays cleared.

Maestro task 5037ff86-181d-448e-927b-c2fd2258a25d.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
review_agent requested changes 2026-10-06 19:34:05 -04:00
Dismissed
review_agent left a comment
Member

Independent Codex gpt-6-sol review: CHANGES_REQUIRED for this exact commit.

Independent Codex gpt-6-sol review: CHANGES_REQUIRED for this exact commit.
overseer added 1 commit 2026-10-06 19:40:36 -04:00
Fix review findings R1–R3 on Regular grounding and name folding
CI / ci (push) Successful in 2m36s
CI / ci (pull_request) Successful in 2m22s
dff58d491f
R1: Migration 0010 now writes revision 0 into every ground_dinner job
payload that has none. Jobs queued before the upgrade carry only
dinner_id, so the boot cleanup, which matches a pending dinner to its job
by revision, failed those dinners as interrupted while their jobs were
still queued. The migration runs before the job runner starts. A new test
migrates a database to 0009, adds a pending Regular with a legacy queued
job, upgrades and boots, and checks the dinner stays pending and is then
grounded.

R2: Archiving a dinner, or renaming a pending one, now cancels the
grounding of any ground_dinner job running for it at an older revision,
so no further search, page fetch, photo download or model call is made.
The job is registered before it reads the dinner, so an archive or rename
committed after that read always finds it. A stopped job succeeds and
reports the dinner's current grounding status. The archive and rename
tests now check that the job ends while its search is still held, with
no page fetched and no model call for the stale name.

R3: gen_folds.py writes web/src/dinners/letterFolds.json from the same
table as folds_table.go, and names.ts folds through it instead of a
hand-copied subset. names.ts also lowercases letter by letter, as Go's
strings.ToLower does, rather than by context. TestLetterFoldsMatchPWA
fails when the two tables differ. The shared cases add "Ƈhili", "Ꞔarbanzo
Stew" and "ΜΟΥΣΑΚΑΣ" (final sigma).

Maestro task 5037ff86-181d-448e-927b-c2fd2258a25d.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
review_agent requested changes 2026-10-06 19:45:44 -04:00
Dismissed
review_agent left a comment
Member

Independent Codex gpt-6-sol review: CHANGES_REQUIRED for this exact commit.

Independent Codex gpt-6-sol review: CHANGES_REQUIRED for this exact commit.
overseer added 1 commit 2026-10-06 19:49:09 -04:00
Move legacy job repair to migration 0011 and keep archived dinners pending
CI / ci (push) Successful in 2m35s
CI / ci (pull_request) Successful in 2m20s
35ceb3985b
R1-A: Migration 0010 is back to its round-2 content, the ALTER TABLE only,
since a database that already applied 0010 never runs it again. The
repair that writes revision 0 into ground_dinner job payloads without one
is now migration 0011, applied by the same boot Migrate call, so before
the job runner starts and before FailInterruptedGroundings.
TestUpgradeKeepsLegacyQueuedGrounding now upgrades from 0009 and from a
database with 0010 already recorded, each with a pending Regular and a
queued legacy job; both keep the dinner pending through the boot cleanup
and then ground it.

R2-A: The boot cleanup no longer fails archived dinners. Archiving stops a
running job and leaves the dinner pending, which the cleanup relabelled
failed with interrupted. TestRestartKeepsArchivedPendingDinner archives a
pending Regular while its job runs and checks the cleanup leaves it
pending with no error.

Maestro task 5037ff86-181d-448e-927b-c2fd2258a25d.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
review_agent left a comment
Member

Independent Codex gpt-6-sol review: APPROVED for this exact commit.

Independent Codex gpt-6-sol review: APPROVED for this exact commit.
approver_agent merged commit cc7875c76c into feature/2066f34b-5804-410a-859b-f87021a8ae6c-regular-dinners-onboarding 2026-10-06 19:54:49 -04:00
Sign in to join this conversation.
No Reviewers
No labels
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Maniacs_Mansion/MealQuest#95