fix: довезти upstream attachment/metadata функционал после merge v2026.626.0 [CL-SYNC-DRIFT] #177

Merged
andrei merged 2 commits from feature/claude-attachment-layer into master 2026-07-04 23:49:56 +00:00
Owner

Что сделано

Слой 9 PIX-13034 (run 35671, 8 красных в issue-attachment-routes). Потери merge при мёртвых определениях helper-ов:

  • withContentPath: openPath/downloadPath;
  • byte-range serving атачментов (206/416, Accept-Ranges, ?download=1) — parseAttachmentRangeHeader портирован, range у storage.getObject уже поддерживался;
  • canonicalizePaperclipArtifactMetadata + вызовы в work-products create/update — attachment-артефакты валидируются, ссылка на чужой attachment отклоняется 422.

Гибрид — сохранены наши форк-фичи поверх upstream-роута: санитизирующий contentDispositionHeader (safe-filename) и normalizeContentLength (live storage length при stale byteSize).

Зачем

Продолжение серии #169/#174/#175: suite вскрывает потери [CL-SYNC] merge слой за слоем; здесь — граница, явно названная в #175.

План тестирования

  • Локально: файл 20/20; regression по ownership+cancel файлам 89/89; typecheck exit 0.
  • CI PR прогонит suite дальше.

Где могу ошибаться

  • Range-парсинг опирается на persisted byteSize; при stale размере крайние диапазоны могут отсекаться по устаревшей длине — ровно как в upstream, отдельного теста на этот стык нет.
  • Санитизация диспозиции наша, не upstream — если upstream добавит свои правила, разъедемся снова; закрыто WHY-комментарием в коде.
## Что сделано Слой 9 PIX-13034 (run 35671, 8 красных в `issue-attachment-routes`). Потери merge при мёртвых определениях helper-ов: - `withContentPath`: `openPath`/`downloadPath`; - byte-range serving атачментов (206/416, `Accept-Ranges`, `?download=1`) — `parseAttachmentRangeHeader` портирован, range у `storage.getObject` уже поддерживался; - `canonicalizePaperclipArtifactMetadata` + вызовы в work-products create/update — attachment-артефакты валидируются, ссылка на чужой attachment отклоняется 422. Гибрид — сохранены наши форк-фичи поверх upstream-роута: санитизирующий `contentDispositionHeader` (safe-filename) и `normalizeContentLength` (live storage length при stale byteSize). ## Зачем Продолжение серии #169/#174/#175: suite вскрывает потери [CL-SYNC] merge слой за слоем; здесь — граница, явно названная в #175. ## План тестирования - Локально: файл 20/20; regression по ownership+cancel файлам 89/89; typecheck exit 0. - CI PR прогонит suite дальше. ## Где могу ошибаться - Range-парсинг опирается на persisted `byteSize`; при stale размере крайние диапазоны могут отсекаться по устаревшей длине — ровно как в upstream, отдельного теста на этот стык нет. - Санитизация диспозиции наша, не upstream — если upstream добавит свои правила, разъедемся снова; закрыто WHY-комментарием в коде.
[CL-SYNC-DRIFT] fix(server): довезти upstream attachment/metadata функционал (PIX-13034, слой 9)
Some checks failed
security/pr-scan No security concerns detected
PR Quality Gates / PR Quality Gates (pull_request_target) Failing after 5s
Agents CI / API Tests (pull_request) Has been cancelled
Agents CI / Typecheck and Build (pull_request) Has been cancelled
ebc3be0640
Run 35671: issue-attachment-routes 8 красных. Потери merge v2026.626.0 при
живых определениях (buildAttachmentContentPath и
resolveAttachmentResponseContentType были мёртвыми):
- withContentPath: openPath/downloadPath;
- byte-range serving контента (206/416, Accept-Ranges, download=1) —
  parseAttachmentRangeHeader портирован, storage.getObject range уже поддержан;
- canonicalizePaperclipArtifactMetadata + вызовы в work-products create/update
  (валидация attachment-артефактов: чужой attachment отклоняется 422).

Гибрид, наши форк-фичи сохранены поверх upstream-роута:
- contentDispositionHeader (санитизация имени файла — safe-filename тест);
- normalizeContentLength (live storage length при stale byteSize).

Локально 20/20, regression 89/89 по трём файлам, typecheck exit 0.

All checks passing — ready for review and maintainer approval.

— paperclip-gates

✅ All checks passing — ready for review and maintainer approval. — paperclip-gates
[CL-SYNC-DRIFT] test(server): suffix byte-range тест для attachment content роута
Some checks failed
security/pr-scan No security concerns detected
PR Quality Gates / PR Quality Gates (pull_request_target) Successful in 7s
Agents CI / Typecheck and Build (pull_request) Successful in 6m45s
Agents CI / API Tests (pull_request) Failing after 9m7s
3ee8210579
Ветка bytes=-N парсера (последние N байт) не была покрыта. Локально 21/21.
andrei merged commit 1a641693dc into master 2026-07-04 23:49:56 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
europa-tech-srl/europa-tech-agents!177
No description provided.