Skip to content

test(opus48): agentic review @beta.15 — us.anthropic.claude-opus-4-8#22

Closed
wezell wants to merge 1 commit into
t15-opus48-basefrom
t15-opus48-head
Closed

test(opus48): agentic review @beta.15 — us.anthropic.claude-opus-4-8#22
wezell wants to merge 1 commit into
t15-opus48-basefrom
t15-opus48-head

Conversation

@wezell

@wezell wezell commented Jun 26, 2026

Copy link
Copy Markdown
Owner

Clean single-model e2e at @v3.3.0-beta.15. Model: us.anthropic.claude-opus-4-8 — bedrock-harness (direct). Reviewed diff = only the dotCMS#36317 change. Throwaway.

dotCMS#36279)

Content Drive's upload dialog lets users pick Asset vs File, which are
semantically base types. Previously only DOTASSET could be resolved from a
base type on the backend, so firing the NEW workflow action with
baseType: FILEASSET failed with "content type or base type is not set or is
invalid". This adds the missing FILEASSET resolution and switches the
frontend to send the base type.

Backend:
- Extract the dotAsset mime-matching algorithm into a reusable
  BaseTypeMimeTypeMatcher (parameterized by base type + binary field var);
  DotAssetAPIImpl.tryMatch now delegates to it (DOTASSET behavior unchanged).
- Move DotAssetBaseTypeToContentTypeStrategyImpl out of the resolver into its
  own class and add FileAssetBaseTypeToContentTypeStrategyImpl, which
  mime-matches FILEASSET content types and falls back to the default FileAsset.
- Register both strategies; fix BaseTypeToContentTypeStrategyResolver.subscribe
  which ignored its baseContentType arg and always registered under DOTASSET.

Frontend:
- Revert uploadDotAsset to its original 2-arg form; add uploadFileByBaseType
  (DotUploadFileService) and newContentletByBaseType (DotWorkflowActionsFireService)
  which send baseType instead of contentType.
- Content Drive now emits DOTASSET/FILEASSET and routes uploads through the new
  method; root-level uploads carry the current site identifier so they land on
  the browsed site, not the default host.

Tests: resolver unit test (subscribe regression + FILEASSET registration),
FileAsset strategy integration test, and frontend specs for the new methods,
base-type selection, and current-site root upload.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jun 26, 2026

Copy link
Copy Markdown

🤖 dotBot Review (Bedrock)

Reviewed 18 file(s); 12 candidate(s) → 0 confirmed, 4 uncertain (unverified, kept for review).

⚠️ Coverage capped: 0 file(s) + 17 lower-severity candidate(s) skipped (limits: 40 files, 12 candidates).

🔎 Uncertain (could not confirm or disprove — review manually)

  • 🟡 Medium core-web/libs/portlets/dot-content-drive/portlet/src/lib/dot-content-drive-shell/dot-content-drive-shell.component.ts:527 — baseType required param may receive undefined from DotContentDriveUploadSelection
    uploadByBaseType declares baseType as a required non-optional string (line 527), but it is sourced from DotContentDriveUploadSelection.baseType passed through uploadFile/uploadFiles. If DotContentDriveUploadSelection.baseType is declared optional, callers could pass undefined, which would be forwarded to uploadFileByBaseType. I could not locate the DotContentDriveUploadSelection type definition (no matches in shared/models, and I exhausted my tool calls) to confirm whether baseType is optional there. TypeScript would normally flag a mismatch at compile time if the source field were optional, which suggests the type may already require baseType — but I cannot positively verify this. Cannot confirm or refute without the interface definition.
  • 🟡 Medium core-web/libs/portlets/dot-content-drive/portlet/src/lib/dot-content-drive-shell/dot-content-drive-shell.component.ts:533 — currentSite fallback may resolve to empty string at site root
    At site root with no folder, hostFolder?.id is undefined and the code falls back to currentSite()?.identifier ?? ''. The store sets currentSite to at least SYSTEM_HOST after initContentDrive (line 100) and loads from globalStore.siteDetails() (line 288), so currentSite is normally defined when an upload occurs, making the empty-string path hard to reach. However, the initial store state is undefined (line 45) and I cannot prove from the diff that an upload cannot fire before site resolution; additionally even when currentSite resolves to SYSTEM_HOST, passing the SYSTEM_HOST identifier as hostFolder may not equal 'the site being browsed' as the comment claims. Cannot fully confirm or refute the unreachability without seeing the upload trigger guards.
  • 🟡 Medium core-web/libs/portlets/dot-content-drive/portlet/src/lib/shared/constants.ts:94 — baseType enum value may not match backend-expected string
    The comment states the backend expects 'DOTASSET' and 'FILEASSET' string literals, but the code passes DotCMSBaseTypesContentTypes enum members. I could not locate the enum definition (no matches in core-web/libs/sdk/types or for the enum declaration), so I cannot confirm whether the enum member values are the literal strings 'DOTASSET'/'FILEASSET' or differ (e.g. 'dotAsset', 'FileAsset'). If they differ, the upload endpoint payload would be wrong and break uploads. Cannot confirm or refute without seeing the enum's value definitions.
  • 🟡 Medium dotCMS/src/main/java/com/dotcms/contenttype/business/BaseTypeMimeTypeMatcher.java:83 — Trailing/leading whitespace not trimmed after splitting comma-separated mime types
    I confirmed the matching logic at lines 72-84 uses exact equals (ALL_MIME_TYPE.equals), endsWith(PARTIAL_MIME_TYPE), and MimeTypeUtils.match against each entry in mimeTypeFieldVariables. If those entries contain leading whitespace (e.g. ' application/' from splitting 'image/png, application/' on ','), then equals/endsWith/match checks would fail to match correctly. However, my grep for 'split' and 'mimeTypeFieldVariables' returned no matches in this file, meaning the splitting/population of mimeTypeFieldVariables occurs in code I could not locate (likely mapToContentTypeMimeType in another class or a helper). I could not confirm whether the split trims whitespace or even uses comma-space input. Without seeing the split logic I cannot prove the whitespace is retained, so this remains uncertain.

us.anthropic.claude-opus-4-8 · Run: #28255178592 · tokens: in: 255388 · out: 10563 · total: 265951 · calls: 66 · est. ~$4.623

@wezell wezell closed this Jun 26, 2026
@wezell wezell deleted the t15-opus48-head branch June 26, 2026 19:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants