Skip to content

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

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

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

Conversation

@wezell

@wezell wezell commented Jun 26, 2026

Copy link
Copy Markdown
Owner

Opus 4.8 through the agentic bedrock-harness (model-agnostic Converse), called directly so it runs the same cheap-model harness as qwen/deepseek/glm — not the native claude-code path (which needs the Claude Code GitHub App this fork lacks). dotCMS/ai-workflows#55 @v3.3.0-beta.10. 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>
@wezell wezell force-pushed the harness-opus48-head branch from 88608de to 1a5688d Compare June 26, 2026 17:22
@github-actions

github-actions Bot commented Jun 26, 2026

Copy link
Copy Markdown

🤖 dotBot Review (Bedrock)

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

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

Confirmed findings

  • 🔵 Low core-web/libs/data-access/src/lib/dot-workflow-actions-fire/dot-workflow-actions-fire.service.ts:157 — baseType parameter can be overridden by spread of data object
    At line 157, data: { baseType, ...data } places baseType first and spreads data after it, so if data contains a baseType key it overrides the explicit parameter, silently discarding the caller's intent. The fix is to spread first then set baseType ({ ...data, baseType }). However the practical likelihood is low: callers pass field data for a known base type and are unlikely to include a literal baseType key, and the typed signature is { [key: string]: string }. Confirmed as a real but low-severity ordering bug.

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

  • 🟠 High dotCMS/src/main/java/com/dotcms/contenttype/business/DotAssetBaseTypeToContentTypeStrategyImpl.java:55 — Potential NPE when contentletMap is absent from contextMap
    Line 34 reads contextMap.get("contentletMap") which yields null if the key is absent, and getBinary() at line 55 dereferences contentletMap.containsKey() with no null check, which would throw NPE. The same pattern exists in FileAssetBaseTypeToContentTypeStrategyImpl. However, this code does not appear in the PR diff (the PR states the reviewed change is only feat(content-drive): add FILEASSET base-type → content-type resolution strategy (#36279) dotCMS/core#36317), and I could not locate the callers to confirm whether contextMap always populates the contentletMap key. If callers always provide it the NPE is unreachable; I cannot prove either way from available evidence, so the verdict is uncertain. It is also not a PR-introduced issue.
  • 🟡 Medium core-web/libs/portlets/dot-content-drive/portlet/src/lib/shared/constants.ts:94 — baseType enum serialization casing for upload endpoint
    UPLOAD_SELECTOR_OPTIONS uses DotCMSBaseTypesContentTypes.DOTASSET/FILEASSET as baseType sent to the upload endpoint. I could not locate the enum definition (no matches for the enum or its string values in core-web/libs), so I cannot verify whether the enum string values serialize to the backend-expected casing (DOTASSET/FILEASSET) versus something like 'dotAsset'. The comment claims the backend resolves these values, but the actual serialized values are unverified. Cannot confirm or refute without the enum definition.

us.anthropic.claude-opus-4-8 · Run: #28254076026 · tokens: in: 283056 · out: 9240 · total: 292296 · calls: 66

Repository owner deleted a comment from github-actions Bot Jun 26, 2026
@wezell wezell closed this Jun 26, 2026
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