dev_agent and Claude Opus 5.5
1cba099f40
Document grounding selection and pipeline order
...
CI / ci (push) Successful in 1m51s
CI / ci (pull_request) Successful in 1m50s
The architecture of record still described the first stored search
result being returned before ranking. It now says ranking decides among
stored and new candidates, a stored source_url being scored on its stored
recipe without refetching its page.
State the exact per-candidate order in the docs and in ground: the photo
download and validation (DownloadPhoto) precedes normalize_recipe, and
CachePhoto records the photo in the same transaction as the recipe.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 15:49:20 -04:00
dev_agent and Claude Opus 5.5
24d91b5bf6
Rank stored candidates on their stored recipe without refetching
...
CI / ci (push) Successful in 1m48s
CI / ci (pull_request) Successful in 1m48s
Ground no longer fetches the page of a candidate whose source URL is
already stored: the stored recipe, its photo, ingredients and steps are
scored as a fetched page would be, so ranking still decides between it
and new candidates, and a stored page that is now unavailable can still
be reused. Rank's fetch-and-extract is split out behind a loader so
Rank and Ground share one scoring path.
The reuse test removes the stored page and checks that only the new
candidate is fetched; the ranking regression test lists the unrelated
stored recipe first so search order cannot pass it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 15:35:37 -04:00
dev_agent and Claude Opus 5.5
871a566800
Rank stored candidates instead of reusing them first
...
CI / ci (push) Successful in 1m48s
CI / ci (pull_request) Successful in 1m53s
Ground returned the first search result that was already stored before
fetching or ranking anything, so an unrelated stored recipe could win
over a relevant new one. Ground now ranks every candidate and walks the
ranking best first, reusing a stored recipe only at its ranked place.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 15:18:29 -04:00
dev_agent and Claude Opus 5.5
ceedc45309
Grounding pipeline and recipe-search settings API
...
CI / ci (push) Successful in 1m49s
CI / ci (pull_request) Successful in 1m48s
recipes.Grounder ties search, fetch/extract, Rank, the photo cache and
normalize_recipe together. Ground(ctx, dishName, query) reuses a stored
source_url among the top candidates without fetching, otherwise tries the
ranked recipes best first and stores the photo, recipe, ingredients and
steps in one transaction, returning Grounded{recipe_id, photo_id, method,
minutes_total, difficulty, source_url, site_name} or a typed
*ErrUngroundable listing every reason. GroundURL grounds a pasted URL the
same way; GroundMany grounds items 3 at a time with per-item results.
PhotoCache is split into DownloadPhoto (fetch, decode, size check, no
writes) and CachePhoto(ctx, tx, photo), which records the row in the
caller's transaction; RemovePhotoFiles cleans up after a rollback.
Migration 0007 adds photo_id, method, difficulty and minutes_total to
recipes, and api_key_last4 to recipe_search_settings. SearXNG is now
called at recipe_search_settings.base_url.
GET/PATCH /api/v1/settings/recipe-search (Brave key sealed with
secretbox, only api_key_set and api_key_last4 returned) and POST
/api/v1/settings/recipe-search/test (searches "chicken tikka masala",
returns the count, 409 not_configured or 502 search_failed).
Maestro task 53afd59c-6c35-4af7-904c-6c167d1ad69d.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-05 15:06:39 -04:00
dev_agent
2a19e89e5a
normalize_recipe skill ( #69 )
...
CI / ci (push) Failing after 6s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-05 14:54:37 -04:00
dev_agent
58e8f30f0e
Photo cache and /media endpoint ( #68 )
...
CI / ci (push) Successful in 1m38s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-05 14:24:11 -04:00
dev_agent
2fb7807af3
Search providers: SearXNG and Brave with ranking ( #67 )
...
CI / ci (push) Successful in 1m37s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-05 13:41:48 -04:00
dev_agent
ec5b586c16
schema.org Recipe JSON-LD extractor ( #66 )
...
CI / ci (push) Successful in 1m36s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-05 13:13:03 -04:00
dev_agent
24eee8bc61
SSRF-safe recipe fetcher ( #65 )
...
CI / ci (push) Successful in 1m34s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-05 12:38:58 -04:00
dev_agent
e6fd24db0a
Return context error when a retry backoff wait is cancelled ( #64 )
...
CI / ci (push) Successful in 1m34s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-05 11:41:23 -04:00
dev_agent
72fa311de9
Feature 09: AI harness and skills framework ( #62 )
...
CI / ci (pull_request) Successful in 1m34s
CI / ci (push) Successful in 1m36s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-05 11:18:53 -04:00
dev_agent
b347e1c911
Retry, backoff and default Generate timeout ( #48 )
...
CI / ci (push) Successful in 1m28s
CI / ci (pull_request) Successful in 1m30s
Independent review Codex gpt-6-sol high: APPROVED (0 findings)
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-04 11:02:55 -04:00
dev_agent
e105cdb9c5
Add xAI Grok as a provider ( #46 )
...
CI / ci (push) Successful in 1m28s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-04 09:36:10 -04:00
dev_agent
9ace3aba9f
Provider presets and factory ( #44 )
...
CI / ci (push) Successful in 1m28s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-04 09:18:34 -04:00
dev_agent
32ab0c0b6d
Ollama native adapter ( #41 )
...
CI / ci (push) Successful in 1m29s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-04 08:47:05 -04:00
dev_agent
15886f2c55
Anthropic Messages adapter ( #40 )
...
CI / ci (push) Successful in 1m27s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-04 08:09:20 -04:00
dev_agent
acd29c8221
Feature 08 task 2: OpenAI-compatible adapter ( #35 )
...
CI / ci (push) Successful in 1m28s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-04 07:41:45 -04:00
dev_agent
72042516e2
Feature 08 task 1: Provider interface, typed errors and Fake provider ( #33 )
...
CI / ci (push) Successful in 1m29s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-03 16:14:12 -04:00
dev_agent
bba9033ac5
Feature 04 integration fix: authenticated job enqueue API and progressive HTTP flow ( #31 )
...
CI / ci (push) Successful in 1m29s
Independent review Codex gpt-6-sol high: APPROVED (0 findings)
CI / ci (pull_request) Successful in 1m28s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-03 15:46:19 -04:00
dev_agent
e050736178
Feature 04 task 5: Async job runner and GET /api/v1/jobs/{id} ( #29 )
...
CI / ci (push) Successful in 1m29s
Independent review Codex gpt-6-sol high: CHANGES_REQUIRED (1 medium)
CI / ci (pull_request) Successful in 1m28s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-03 15:24:01 -04:00
dev_agent
3ba78d47bc
Feature 04 task 4: Default seeding for AI settings and notification preferences ( #28 )
...
CI / ci (push) Successful in 1m26s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-03 14:58:30 -04:00
dev_agent
8be5c56f6f
Feature 04 task 3 (rebased): Household settings seeding and API ( #27 )
...
CI / ci (push) Successful in 1m22s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-03 11:50:15 -04:00
dev_agent and Claude Opus 5.5
ea4047a852
Merge origin/dev (Feature 03) into Feature 04 integration
...
CI / ci (push) Successful in 1m26s
Feature 03 made the OIDC variables required, so the Feature 04 boot tests'
loadConfig helper now sets them alongside the secret key file.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-03 11:38:18 -04:00
dev_agent
df692ef214
Feature 03 integration fix: sanitize ID-token verification errors ( #26 )
...
CI / ci (push) Successful in 1m26s
Independent review Codex gpt-6-sol high: APPROVED (0 findings)
CI / ci (pull_request) Successful in 1m33s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-03 11:32:36 -04:00
dev_agent
88f7d0a5fa
Feature 03 integration fix: sanitize discovery errors and narrow CSRF exemption ( #25 )
...
CI / ci (push) Successful in 1m25s
CI / ci (pull_request) Failing after 1m2s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-03 11:22:53 -04:00
dev_agent
5833a73541
Feature 03 task 5: Trusted proxy handling for forwarded headers ( #23 )
...
CI / ci (push) Successful in 1m25s
CI / ci (pull_request) Successful in 1m24s
Independent review Codex gpt-6-sol high: CHANGES_REQUIRED (2 medium)
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-03 11:05:33 -04:00
dev_agent
36b975ff5b
Feature 03 task 4: CSRF protection and GET /api/v1/me ( #22 )
...
CI / ci (push) Successful in 1m26s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-03 10:51:26 -04:00
dev_agent
b2201c5da1
Feature 03 task 3: Household group gate and auth middleware ( #21 )
...
CI / ci (push) Successful in 1m27s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-03 10:30:07 -04:00
dev_agent
f0bdd0ef40
Feature 03 task 2: Server-side sessions, cookie and logout ( #19 )
...
CI / ci (push) Successful in 1m24s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-03 10:20:14 -04:00
dev_agent
5e78465d34
Feature 04 task 2: Household week and local-time utilities ( #18 )
...
CI / ci (push) Successful in 1m25s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-03 09:58:06 -04:00
dev_agent
99c8f1625f
Feature 03 task 1: OIDC login and callback against Authentik ( #16 )
...
CI / ci (push) Successful in 1m25s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-03 09:58:05 -04:00
dev_agent
6d5c14f778
Feature 04 task 1: secretbox: AES-256-GCM secrets at rest ( #17 )
...
CI / ci (push) Successful in 1m26s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-03 09:46:29 -04:00
dev_agent
c1a868c48b
Feature 02 integration fix: repository coverage and boot-path tests ( #15 )
...
CI / ci (push) Successful in 1m22s
CI / ci (pull_request) Successful in 1m24s
Independent review Codex gpt-6-sol high: APPROVED (0 high/medium; 1 low)
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-03 09:27:22 -04:00
dev_agent
17a69f4de7
Feature 02 task 4: sqlc configuration and core queries ( #13 )
...
CI / ci (push) Successful in 1m25s
CI / ci (pull_request) Successful in 1m24s
Independent review Codex gpt-6-sol high: CHANGES_REQUIRED (4 medium)
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-03 09:15:40 -04:00
dev_agent
fa7c6b7218
Feature 02 task 3: Initial v1 schema migration ( #12 )
...
CI / ci (push) Successful in 50s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-03 09:06:21 -04:00
dev_agent
b06d1680a3
Feature 02 task 2: Store helpers: transactions, ULIDs and time conventions ( #11 )
...
CI / ci (push) Successful in 48s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-03 08:54:55 -04:00
dev_agent
e9ee4e768a
Feature 02 task 1: SQLite connection and embedded migration runner ( #10 )
...
CI / ci (push) Successful in 49s
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-03 00:54:02 -04:00
dev_agent
85569b451f
Feature 01 task 3: Embed the PWA build with SPA fallback ( #4 )
...
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-02 22:47:01 -04:00
dev_agent
e3d8c4d73d
Feature 01 task 1: Go module, fail-fast config and /health ( #2 )
...
Co-authored-by: dev_agent <dev_agent@cubecraftlabs.com >
Co-committed-by: dev_agent <dev_agent@cubecraftlabs.com >
2026-10-02 22:20:34 -04:00