Confirms all five are live on the local dev instance without a restart (autoreload picked them up), and suggests where to probe next - boundary cases on the new length/content-shape validation, other wrong-typed PATCH fields beyond tags, and eviction race conditions #006 doesn't cover. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
54 lines
2.8 KiB
Markdown
54 lines
2.8 KiB
Markdown
# 007 — Handover to AGENT_DAYBOOK__LLM_TEST: issues #002-#006 fixed
|
|
|
|
**Status:** For information — not a bug report, a handback after fixing
|
|
what #002-#006 found.
|
|
|
|
## What Changed
|
|
|
|
All five issues your last testing round filed are fixed, committed
|
|
(`07328a3` on `main`, pushed to `origin`), and confirmed live on the running
|
|
local dev instance (`http://127.0.0.1:8001`, same one you test against —
|
|
no restart needed on your end, Django's autoreloader already picked it up):
|
|
|
|
- **#002** — `.env.example` deleted; `SKILL.md`/`docs/llm_posting_helper.md`
|
|
now say explicitly these must be real process/shell env vars.
|
|
- **#003** — `source`/`title`/`source_name`/`source_id`/`theme` now
|
|
enforce their model length limits on both `POST` and `PATCH`, returning
|
|
`400` naming the field.
|
|
- **#004** — server now validates content shape per `kind`
|
|
(`html_fragment`/`html_full`/`deck`/`markdown`), mirroring
|
|
`daybook_post.py`'s existing client-side checks.
|
|
- **#005** — `PATCH` now rejects wrong-typed `tags` (400, instead of
|
|
silently wiping existing tags) and rejects immutable fields
|
|
(`content`/`source`/`kind`/`day`) with 400 instead of silently no-op'ing.
|
|
- **#006** — the quota-eviction data-loss bug: a doomed `POST` no longer
|
|
destroys unkept artifacts on its way to still failing with `413`.
|
|
|
|
Full detail, root cause, and exact fix for each is in its own issue file
|
|
(`002` through `006`) — this doc is just the summary + what to do next.
|
|
|
|
## Suggested Next Round
|
|
|
|
Worth specifically re-probing (not just re-running the original repros —
|
|
try to break the fixes themselves):
|
|
|
|
- **#003/#004 boundary/edge cases**: exact-limit-plus-one values, unicode
|
|
characters (does length-checking count characters or bytes?), mixed valid
|
|
content with edge-case whitespace/casing on the `<html`/`<!doctype`/
|
|
`<body`/`<section` substring checks (e.g. `<HTML>`, `< html`, content
|
|
containing those strings inside a code block/string literal rather than as
|
|
real markup).
|
|
- **#005**: other wrong-typed fields on `PATCH` beyond `tags` — e.g.
|
|
`source_prompt`/`source_name`/`source_id` as non-strings (currently
|
|
accepted via implicit coercion, noted as untested in #005's original
|
|
writeup).
|
|
- **#006**: multi-request race conditions around eviction (two posts near
|
|
the quota boundary at once) — not covered by the fix, which only handles
|
|
the single-request case cleanly.
|
|
- General: anything from the original `issues/002-006` reproductions that
|
|
might have a sibling case not explicitly covered by the tests added
|
|
alongside each fix (`tests/api/test_artifacts.py`, `tests/unit/test_storage.py`).
|
|
|
|
As always: use the `test`/`testpwd` account, clean up what you create, and
|
|
file anything real as a new numbered issue rather than reopening a closed
|
|
one (link back to the original if it's a variant of the same root cause).
|