Repository navigation
Compare release-2.1 with main - #5235
Draft
its-mitesh-kumar wants to merge 291 commits into
Draft
its-mitesh-kumar wants to merge 291 commits into
its-mitesh-kumar wants to merge 291 commits into
Conversation
…dMetrics is configured for Scorecard (#5089) * fix(scorecard): exclude disabled metrics from `getLatestEntityMetrics` Signed-off-by: Ihor Mykhno imykhno@redhat.com Co-authored-by: Cursor <cursoragent@cursor.com> * docs(scorecard): clarify disabled metrics behavior for entity cards vs stored data Signed-off-by: Ihor Mykhno <imykhno@redhat.com> --------- Signed-off-by: Ihor Mykhno imykhno@redhat.com Signed-off-by: Ihor Mykhno <imykhno@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…rs (#5119) * fix(intelligent-assistant): disable MCP Enabled toggle on Status errors Keep the configure modal from accepting enable/save actions when Status shows a tools or validation error, and surface organization-mode Save failures with the API error text. Enabled tooltip matches Status text. Fixes: https://redhat.atlassian.net/browse/RHDHBUGS-3881 Assisted-by: Claude Signed-off-by: Yi Cai <yicai@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com> * chore(intelligent-assistant): bump yarnPath to 4.18.1 Align workspace yarnPath with the committed Yarn release after the repo-wide Yarn 4.18.1 bump so CI can resolve yarn. Assisted-by: Claude Signed-off-by: Yi Cai <yicai@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com> --------- Signed-off-by: Yi Cai <yicai@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(fullsend): align RHDH harnesses with v0.45.0 * chore(fullsend): keep Renovate policy separate from v0.45 upgrade Removed disabled Fullsend workflow configuration from Renovate settings.
…887) (#5118) * fix(x2a): show full rule text in create-project rules field (FLPATH-4887) The create-project rules checklist truncated each rule description to 100 characters with no way to read the rest, so long rules were never fully visible before acceptance. Add a "Read more" link that opens a read-only dialog with the complete text, mirroring the full-text access the admin rules table already has via its edit dialog. - Keep the compact 100-char preview in the checklist row - "Read more" opens a dialog with the untruncated description - Guard the link so opening it does not toggle the acceptance checkbox - Add readMore/close translation keys (ref + de/es/fr/it/ja) - Add RulesAcceptance tests covering truncation, the dialog, short descriptions, and the no-toggle guard Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Yaron Dayagi <ydayagi@redhat.com> * docs(x2a): add changeset for rules read-more fix (FLPATH-4887) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Yaron Dayagi <ydayagi@redhat.com> * fix(x2a): update API reports for new translation keys (FLPATH-4887) The readMore/close keys added to the public x2aPluginTranslationRef changed the plugin's public API surface; regenerate report.api.md and report-alpha.api.md via 'yarn build:api-reports'. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Yaron Dayagi <ydayagi@redhat.com> --------- Signed-off-by: Yaron Dayagi <ydayagi@redhat.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
….6 in /workspaces/theme (#5140) Signed-off-by: dependabot[bot] <support@github.com>
…ge (#5142) * test(intelligent-assistant): add OKP product-docs RAG citation coverage Fixes: https://redhat.atlassian.net/browse/RHIDP-14132 Signed-off-by: HusneShabbir <husneshabbir447@gmail.com> Co-authored-by: Cursor <cursoragent@cursor.com> * test(intelligent-assistant): drop redundant OKP citation coverage Keep L1 offline mapping and one e2e for online+offline hrefs; remove overlap with existing BYOK no-citation and SourcesChip suites. Signed-off-by: HusneShabbir <husneshabbir447@gmail.com> Co-authored-by: Cursor <cursoragent@cursor.com> --------- Signed-off-by: HusneShabbir <husneshabbir447@gmail.com> Co-authored-by: HusneShabbir <husneshabbir447@gmail.com> Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(homepage): pass widget props on a read-only NFS homepage * reverted to customizable * read-only now support multiple same copies of widgets with own props * update readme
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…5132) Signed-off-by: Nick Boldt <nboldt@redhat.com>
* ci: auto-approve rhdh-bot chore/automated PRs Match the rhdh auto-approve workflow for branches such as chore/automated-yarn-bump, then enable squash auto-merge. This repo has no OpenShift merge bot. https://redhat.atlassian.net/browse/RHIDP-17563 Generated-by: cursor Co-authored-by: Cursor <cursoragent@cursor.com> * ci: keep auto-approve token read-only openshift-merge-robot merges from lgtm and approved. Drop contents: write and gh pr merge so this job only labels and approves. https://redhat.atlassian.net/browse/RHIDP-17563 Generated-by: cursor Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: rhdh-bot service account <rhdh-bot@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
…kills connector (OpenSpec task 2.1) (#5057) * feat(RHIDP-17324): add public Quay organization discovery Add paginated public Quay organization discovery to the skill-image-connector-backend plugin (OpenSpec task 2.1). A new `skillImageConnector.quayDiscovery` configuration section allows operators to specify a public Quay organization. On startup, the plugin discovers all repositories in the organization via the Quay public API, selects the configured tag (defaulting to `latest`), and feeds discovered image references into the existing acquisition path alongside explicit image configurations. Duplicate references are deduplicated. The existing `/images` raw-content response format is preserved. Changes: - New QuayDiscovery service with paginated Quay API listing, cycle detection, and page limits per design D7 - Updated plugin initialization to merge discovered repositories with explicit image configs before processing - New `quayDiscovery` section in config.d.ts with backend visibility - Updated README with discovery configuration and usage docs - Tests for single page, multi-page, empty discovery, custom tag, listing failure, invalid response, pagination cycle detection, and config reading Related to RHIDP-17324 Assisted-by: claude-opus-4-6 * skill-image-connector-backend prettier fix * update changeset * fix: address review feedback on PR #5057 - Log warning when discovered repos are silently dropped by MAX_CONFIGURED_IMAGES cap - Track discovery failure state; set processingStatus to 'failed' when discovery-only configuration fails at runtime instead of reporting 'ready' - Check off task 2.1 in openspec tasks.md (implemented by this PR) - Add client-side verification that repo.namespace matches configured org in Quay discovery responses - Extract mergeDiscoveredRefs into a testable function with test coverage for the MAX_CONFIGURED_IMAGES cap enforcement during merge - Add test for already-aborted AbortSignal on discoverQuayRepositories - Add aggregate mutable-tag warning for discovered images - Move QuayDiscoveryConfig to services/types.ts (codebase convention) - Use separate zero-based counter for discovered image IDs Addresses #5057 Assisted-by: Claude Opus 4.6 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: address review feedback on PR #5057 (iteration 2) - Add retry logic with exponential backoff to discoverQuayRepositories for transient API failures (fetchPageWithRetry) - Update audit.md timestamp and content to reflect task 2.1 completion - Add explicit check for missing/undefined namespace in repo filtering - Add lightweight repo name format validation (REPO_NAME_PATTERN) - Validate quayDiscovery.registry against OCI_REGISTRY_PATTERN - Fix import ordering in plugin.ts (alphabetical: OciClient, QuayDiscovery, SkillImageService) - Fix import ordering in QuayDiscovery.ts (type import before value import) - Remove re-export of QuayDiscoveryConfig from QuayDiscovery.ts - Remove export from QuayRepository interface (internal only) - Add tests for registry validation, retry behavior, and invalid name filtering Addresses #5057 Assisted-by: Claude Opus 4.6 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(ai-integrations): share OCI acquisition handling and limits Harden RHIDP-17324 Quay discovery and OCI image acquisition for PR #5057 while keeping the OpenSpec implementation scoped to task 2.1. - Extract shared HTTP helpers for redirect validation, cross-origin credential stripping, response cleanup, bounded body reads, and request deadlines spanning authentication, redirects, and body consumption. - Share transient-error classification and cancellation-aware retry backoff. Give each discovery retry a fresh timeout; retry complete image acquisitions without adding nested retries to individual OCI requests. - Centralize defaults and validate optional backend configuration for fetchTimeoutMs, maxBlobSizeBytes, maxAggregateContentSizeBytes, maxDiscoveryResponseSizeBytes, maxImages, maxRetries, and retryBaseDelayMs. Preserve defaults when omitted and allow zero retries. - Apply the configured blob/decompression and retained UTF-8 content budgets. Validate discovery tags and bound Quay JSON responses. - Make the combined explicit/discovered candidate cap configurable, with a default of 25, explicit-image priority, and duplicate elimination. Larger inventories can be processed without changing concurrency. - Log discovered-image 404s only at debug level while preserving error diagnostics for explicit images, organization listing, and other failures. Preserve token-endpoint 404 status and API failure accounting. - Add regression and integration coverage for timeouts, cancellation, redirects, retries, limits, 404 reporting, and a 75-repository inventory. - Update config documentation, the changeset, and OpenSpec artifacts. Comment out local Quay enablement and tuning examples in app-config.yaml. Validation: - yarn install --immutable (scripts disabled); yarn dedupe - yarn tsc:full; yarn build:all - Connector tests: 205 passed across 10 suites with --watchAll=false - Connector lint; yarn prettier:check; git diff --check - yarn build:api-reports:only --ci - Strict OpenSpec validation Fixes: https://redhat.atlassian.net/browse/RHIDP-17324 Co-authored-by: Codex <noreply@openai.com> Signed-off-by: gabemontero <gmontero@redhat.com> * fix(ai-integrations): address review feedback on PR #5057 - Use signal?.throwIfAborted() instead of manual aborted check in QuayDiscovery for consistency with HttpClient and Retry - Remove needless requestSignal alias in fetchWithRedirects since signal is a required AbortSignal parameter - Remove export from abortAwareDelay which has no consumers outside Retry.ts - Add JSDoc to quayDiscovery.organization noting it is effectively required for discovery to function Addresses #5057 Assisted-by: Claude Opus 4.6 * enable in config with new connection related params * feat(ai-integrations): discover all active Quay skill image tags Treat an omitted, null, or blank quayDiscovery.tag as all active tags instead of implicitly selecting latest. Explicit tags remain exact OCI tag filters; setting tag: latest preserves the former default. - Enumerate active repository tags through Quay's paginated tag API. Reuse shared HTTP validation, response bounds, request deadlines, retries, and cancellation for repository and tag pages. - Apply one 100-page budget across both listing types, detect repeated repository tokens and tag pagination without progress, and return deterministic, deduplicated repository:tag candidates. - Preserve different tags even when they share the same manifest digest. Count each tagged candidate against maxImages alongside explicit images, retaining explicit-reference priority. - Reject invalid tag syntax and non-string values instead of silently broadening discovery. Keep wildcard and regex matching unsupported. - Revise the OpenSpec proposal, design, scenarios, and pending tasks to require a separate catalog entry per valid OCI skill-image tag. Use registry/repository:tag as the stable key: moving a tag keeps its identity, same-digest aliases stay separate, and non-skills emit no catalog entry. Normalization and catalog publication remain pending. - Align shared contract fixtures and identity tests with tagged keys. Document the changed default, migration, request limits, and the existing raw /images response limitations. - Preserve the maintainer's tested app-config.yaml settings as supplied. Validation: - 233 connector tests and 166 shared-library tests passed with --watchAll=false; independent verification passed. - Workspace type checking/build, affected-package lint, formatting, API-report checks, dependency install/dedupe, and strict OpenSpec validation passed during implementation. - Maintainer subsequently reported successful testing. - Pre-commit formatting, OpenSpec validation, and diff checks passed. Refs: https://redhat.atlassian.net/browse/RHIDP-17324 Co-authored-by: Codex <noreply@openai.com> Assisted-by: GPT-6 Signed-off-by: gabemontero <gmontero@redhat.com> * fix(ai-integrations): clarify discovery defaults and contract migration Address the agreed Fullsend review feedback for PR #5057 while preserving the accepted all-active-tag discovery and per-tag identity behavior. - Mark the ai-skills-common changeset as minor and document migration from repository-only keys to exact repository/tag keys. Clarify that hashing and validators are unchanged and upgrading the library alone does not migrate caller-supplied keys or existing catalog entities. - Rename configurable fallback constants with DEFAULT_ prefixes and separate them from fixed ceilings without changing values or config keys. Document the effective blob limit as options.maxBlobSizeBytes. - Consolidate discovery configuration tests and clarify size-limit test names. Document the synchronous aggregate-budget check, increment and insertion that prevents promise continuations from exceeding the cap. - Correct the README's DNS-rebinding protection claim. Track validation of the connected destination and DNS-change coverage explicitly in D7, the OCI specification and pending task 2.4; runtime hardening stays in that follow-up task. - Refresh the OpenSpec audit and journal with the review disposition, validation results and maintainer acceptance. Validation: - 233 connector tests passed with --watchAll=false --runInBand. - Workspace tsc:full and build:all passed. - Connector lint, workspace prettier:check, immutable dependency install, strict OpenSpec validation and git diff --check passed. - Maintainer reported successful sanity testing. Refs: https://redhat.atlassian.net/browse/RHIDP-17324 Refs: #5057 Co-authored-by: Codex <noreply@openai.com> Assisted-by: GPT-6 Signed-off-by: gabemontero <gmontero@redhat.com> * fix(ai-integrations): clarify discovery logging and test completion order Address the agreed follow-up review findings for PR #5057 without changing discovery behavior, configuration defaults or the accepted tag contract. - Rename the internal warnOnNotFound flag to logNotFoundAsError across the processing path, tests, README and OpenSpec design. Preserve error diagnostics for explicit references and debug logging for discovered image 404s, including explicit-reference precedence during merging. - Clarify that an omitted or blank quayDiscovery.organization skips discovery with a warning. Keep the schema field optional and preserve explicit image processing when discovery is disabled. - Add controlled integration coverage that holds an explicit image result pending while a discovered image completes first. Verify retained UTF-8 bytes stay within the aggregate budget, the later explicit result is rejected, and only that rejected extraction is cleaned up. Release the pending promise even when an assertion fails so shutdown can finish. - Refresh the OpenSpec audit and journal with the review decisions, completed checks and maintainer test acceptance. Keep connection safety in task 2.4 and partial-discovery handling in task 2.5. Validation: - 234 connector tests passed with --watchAll=false --runInBand. - Workspace tsc:full and build:all passed. - Connector lint, workspace prettier:check, immutable dependency install, strict OpenSpec validation and git diff --check passed. - Maintainer reported successful testing. Refs: https://redhat.atlassian.net/browse/RHIDP-17324 Refs: #5057 Co-authored-by: Codex <noreply@openai.com> Assisted-by: GPT-6 Signed-off-by: gabemontero <gmontero@redhat.com> * fix(ai-integrations): distinguish missing manifests from token errors Keep discovery quiet for expected missing manifest tags while retaining image-reference diagnostics for bearer-token and blob 404 failures. - Identify manifest HTTP failures explicitly and limit 404 suppression to that type. - Add regression coverage for manifest, bearer-token, and blob 404 reporting. - Document the retry defaults noted in the PR review. Validation: 92 focused tests, tsc:full, prettier:check, build:all, and diff checks passed. Maintainer reported successful cluster testing. Refs: https://redhat.atlassian.net/browse/RHIDP-17324 Refs: #5057 Co-authored-by: Codex <noreply@openai.com> Assisted-by: GPT-6 Signed-off-by: gabemontero <gmontero@redhat.com> * fix(ai-integrations): deduplicate registry hostname casing Compare skill image references using case-insensitive registry hostnames so explicit and discovered duplicates do not consume extra maxImages slots. Preserve the first explicit reference, credentials, and reporting policy; keep repository paths, tag casing, and distinct registry ports unchanged. - Share hostname-only comparison keys across explicit config and discovery merging. - Add regression tests for mixed-case hostnames, configuration precedence, candidate limits, distinct tag casing, ports, and oci:// references. - Rename DEFAULT_MAX_CONFIGURED_IMAGES to DEFAULT_MAX_IMAGES without changing the default limit of 25. - Clarify initial-request DNS validation limitations in the README and retain connection-level destination validation under OpenSpec task 2.4. Validation: 242 connector tests passed with --watchAll=false --runInBand. yarn install, yarn dedupe, yarn tsc:full, yarn prettier:check, yarn build:all, and git diff --check completed successfully. Maintainer cluster testing passed. Refs: https://redhat.atlassian.net/browse/RHIDP-17324 Refs: #5057 Co-authored-by: Codex <noreply@openai.com> Assisted-by: GPT-6 Signed-off-by: gabemontero <gmontero@redhat.com> * docs(ai-integrations): clarify acquisition configuration and task scope Document the acquisition configuration and supporting utilities already included in OpenSpec task 2.1 without changing runtime behavior. - Include the seven optional acquisition settings and shared HTTP/retry utilities in the task 2.1 description. - State the existing safe-integer and timer ranges in configuration JSDoc. - Explain why numeric option parsing is separate from configuration parsing that reuses OCI reference, tag, and token-realm validators. - Update the focused OpenSpec audit and interaction journal to record the maintainer-approved Fullsend review dispositions and documentation checks. Connection-level destination validation remains task 2.4. Task completion status, runtime validation, defaults, and the minor changeset are unchanged. Validation: strict OpenSpec validation, journal checks, targeted Prettier checks, and git diff --check passed. Workspace-wide Prettier reports only the maintainer's existing app-config.yaml formatting; that file is excluded. Maintainer reviewed the documentation and authorized this local commit. Refs: https://redhat.atlassian.net/browse/RHIDP-17324 Refs: #5057 Co-authored-by: Codex <noreply@openai.com> Assisted-by: GPT-6 Signed-off-by: gabemontero <gmontero@redhat.com> --------- Signed-off-by: gabemontero <gmontero@redhat.com> Co-authored-by: fullsend-code <278716306+fullsend-ai-coder[bot]@users.noreply.github.com> Co-authored-by: gabemontero <gmontero@redhat.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Codex <noreply@openai.com>
* fix(IA): model-length-trimmed Signed-off-by: rohitratannagar <rohitratannagar2003@gmail.com> * fix(IA/global-header): gloabl-header-highlight-issue Signed-off-by: rohitratannagar <rohitratannagar2003@gmail.com> * addressing comments Signed-off-by: rohitratannagar <rohitratannagar2003@gmail.com> --------- Signed-off-by: rohitratannagar <rohitratannagar2003@gmail.com>
#5144) * fix(intelligent-assistant): update disclaimer copy, prompt placeholder, and card icons Signed-off-by: rohitratannagar <rohitratannagar2003@gmail.com> * remove custom welcome prompt Signed-off-by: rohitratannagar <rohitratannagar2003@gmail.com> --------- Signed-off-by: rohitratannagar <rohitratannagar2003@gmail.com>
…leBlueprint (#4094) Fixes: https://redhat.atlassian.net/browse/RHDHBUGS-3521 Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com>
Signed-off-by: teknaS47 <sanketsaikia13@gmail.com>
…5081) * fix(scorecard): allow a custom aggregationId on NFS homepage cards * fix(scorecard): replace fixed NFS homepage widgets with one configurable card * fix e2e * fix api report * fix api report * fix(scorecard): adopt homepage 3.1.0 for the NFS and legacy apps * fix(scorecard): format app-config.yaml for Prettier Signed-off-by: Eswaraiahsapram <esapram@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com> * fix onboarding section order --------- Signed-off-by: Eswaraiahsapram <esapram@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
) * fix(scorecard): remove redundant /alpha re-export of translations Fixes: https://redhat.atlassian.net/browse/RHDHBUGS-3522 Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> Co-authored-by: Cursor <cursoragent@cursor.com> Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> Co-authored-by: Cursor <cursoragent@cursor.com> * updating readme Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> --------- Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> Co-authored-by: Cursor <cursoragent@cursor.com>
…-defaults) (#5108) * fix(theme): align PF shell chrome and SidebarPage with full-width masthead Keep shell backgrounds consistent via branding chrome tokens, size the content well under the global header, square left border-box clips under the drawer while preserving content-edge corner masks, and stabilize the sidebar scrollbar gutter. Fixes: https://redhat.atlassian.net/browse/RHIDP-15742 Signed-off-by: Yi Cai <yicai@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com> * fix(global-header): full-width PF masthead with sidebar offset Span the masthead across the viewport, show the company logo by default, publish --rhdh-global-header-height, and offset the fixed Backstage sidebar drawer below the header. Fixes: https://redhat.atlassian.net/browse/RHIDP-15742 Signed-off-by: Yi Cai <yicai@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com> * feat(app-defaults): sectioned NFS sidebar with masthead-aware settings Split the sidebar into default, optional-plugin, and admin/settings sections; hide Settings/logo by default when the global header is present; gate Administration; offset the drawer below the masthead; stabilize the menu scrollbar gutter. Fixes: https://redhat.atlassian.net/browse/RHIDP-15742 Signed-off-by: Yi Cai <yicai@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com> * fix: stop stacking masthead offset on sidebar root and drawer Offset only the fixed sidebar-root below the global header and keep the absolute drawer filling the root so hashed JSS class names cannot leave a gap under the masthead. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Signed-off-by: Yi Cai <yicai@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Bumps [handlebars](https://github.com/handlebars-lang/handlebars.js) from 4.7.9 to 4.7.10. - [Release notes](https://github.com/handlebars-lang/handlebars.js/releases) - [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/v4.7.10/release-notes.md) - [Commits](handlebars-lang/handlebars.js@v4.7.9...v4.7.10) --- updated-dependencies: - dependency-name: handlebars dependency-version: 4.7.10 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…rill-down (#5145) * Fix aggregation vs entities thresholds for drill down and WeightedStatusScore Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Update mocks Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Export threshold mocks to dedicated constant files or import from common Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> --------- Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com>
Signed-off-by: rohitratannagar <rohitratannagar2003@gmail.com>
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…in the root scan (RHIDP-16221) (#5473) * test(install-dynamic-plugins): cover catalog-index.ts and lost+found in the root scan (RHIDP-16221) catalog-index.ts had no test file of its own. Add catalog-index.test.ts for extractCatalogIndex, extractCatalogIndexLayers, the unsafe subdirectory guard (absolute paths, traversal), tar entry filtering, the entry size cap and cleanupCatalogIndexTemp. Add installer-root-entries.test.ts for RHDHBUGS-1573: lost+found and stray files in dynamic-plugins-root are skipped by the installed-plugin scan. A malformed manifest.json surfaced as a bare SyntaxError and a corrupt layer as a bare TAR_BAD_ARCHIVE error, neither naming the image. Both now raise an InstallException that names the image (and the layer digest). Each new test was checked against a mutation of the code it guards; all 20 mutations are killed. catalog-index.ts coverage goes from 74.6% statements / 62.7% branches to 100% / 95.1%. Refs: RHIDP-16221, RHDHBUGS-2786, RHDHBUGS-1573 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(install-dynamic-plugins): fail on a layer missing from the catalog index download The ticket asks that a missing layer raise an InstallException naming the image. A blob listed in manifest.json but absent after `skopeo copy` was skipped silently: the primary index then failed later with an unrelated "dynamic-plugins.default.yaml not found", and an extra index reported success with a warning. It now fails with the digest and the image. Review follow-ups: - Read manifest.json outside the try so an I/O error is not reported as "Malformed manifest.json". - Cover a truncated layer as well as a non-tar one. - Drop tests that re-ran branches already covered in extra-catalog-index.test.ts; move the absolute-name parse cases into that file's existing it.each. - Drop the unused `exists` stub, rename promise variables from `err` to `extraction`, make the cleanup loop assert it ran, and note that the 0o000 lost+found case only differs for a non-root user. Refs: RHIDP-16221 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * refactor(install-dynamic-plugins): move layer extraction out of the loop Resolve every layer blob up front with one concurrent existence check, so a missing layer fails before anything is written instead of after the earlier layers were extracted. Extraction moves into extractLayer() and is chained in manifest order, since later layers must overwrite earlier ones. This removes the two await-in-loop findings Sonar raised on the PR and the no-loop-func suppression the old closure needed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test(install-dynamic-plugins): pin fail-before-extract on a missing layer The previous commit moved the missing-layer check ahead of extraction, but no test asserted that nothing is written when it fires. The missing-layer case now also checks the destination stays empty; reverting to the per-layer check fails it. OciManifest typed layer digests as required while the code and the fixtures treat them as optional; the type now says so. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(install-dynamic-plugins): validate catalog index manifest shape and layer paths Review findings on the catalog-index changes: - JSON.parse accepted `null` or `{"layers":"x"}` and the code then failed with a bare TypeError that did not name the image. The manifest must now be an object whose `layers`, when present, is an array; entries that are not objects with a string digest are skipped like digest-less ones. - A digest such as `sha256:../../x` made the blob path resolve outside the download directory, so tar would read an arbitrary local file as a layer. Such a digest is now refused before anything is extracted. - The tar latch is named `pending` again with the comment explaining why it exists, matching tar-extract.ts; LayerBlob.path is now `file` so it no longer shadows the path module, and resolveLayerPaths became resolveLayerBlobs since it returns blobs. - The cleanup test is split so a failure names the path that broke. The changeset now describes the full behaviour change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(install-dynamic-plugins): fail on a catalog index layer entry with no usable digest Review feedback: a manifest layer entry that is not an object, has a non-string digest, or has no algorithm prefix was dropped silently, so a manifest of only such entries extracted nothing and resolved. The primary index then blamed the image with "dynamic-plugins.default.yaml not found" and an extra index exited 0. Such an entry now raises an InstallException naming the entry index and the image, before any layer is extracted. The malformed-manifest tests now assert the distinguishing part of each message (the JSON.parse error text, and "expected an object with a layers array"), so the two guards can no longer be swapped unnoticed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: John Collier <jcollier@redhat.com>
Assisted-by: OpenAI GPT-6 Signed-off-by: Jordan Dubrick <jdubrick@redhat.com>
…5450) Read upstream error bodies as text before parsing JSON so plain-text failures retain their original message. Cover the plain-text regression and assert that JSON error details remain intact. Assisted-by: OpenAI GPT-6 Signed-off-by: Jordan Dubrick <jdubrick@redhat.com>
…data (#5447) Remove duplicate owner, name, description, and timestamp keys from a copy of session metadata before storage. Cover conflicts, retained metadata, and input preservation in one focused regression. Assisted-by: OpenAI GPT-6 Signed-off-by: Jordan Dubrick <jdubrick@redhat.com>
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* fix(orchestrator): reduce Data Index queries for workflow pages. for https://redhat.atlassian.net/browse/RHDHBUGS-4075 * squash: adding changeset * squash: sonarcube update
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…5474) * docs(RHIDP-18761): reconcile OpenSpecs with agreed 2.2 minimum scope Curate recovered RHDHPLAN-1507 specifications to match the agreed RHDH 2.2 minimum baseline. This removes summer requirements that were mixed into the reusable SDK contracts and separates stretch goals from minimum implementation obligations. Changes: - Archive neo4j-knowledge-graph, oci-skill-registry, and oci-skill-connector change directories (status: archived). - Remove air-gapped-deployment spec from active minimum specs (configuration examples preserved in connector-shared-infrastructure change). - Remove Neo4j adapter interface (Decision 7) and SkillBundle metadata contract (Decision 8) from design and tasks. - Remove skill-bundle from the mandatory annotation category values (seven to six: agent, skill, rule, mcp-server, ai-model, model-server). - Remove legacy SkillImage/skillcard payload assumptions from the common SDK contract (entity-provider-sdk spec). - Separate 5,000-entity load/SLA acceptance as stretch (tracked under RHIDP-15294). Keep per-entity fault isolation as minimum. - Note deferred items in delta-sync-framework: durable storage, invalid-cursor orchestration, incremental entity providers. - Update migration-readiness mappings: remove skill-bundle rows, refresh category counts. Sign-off remains pending. - Update CURRENT.md and annotation-specification.md references. Related to RHIDP-18761 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(RHIDP-18761): clarify minimum scope and delta helper responsibilities Separate five minimum categories from existing rule compatibility, reconcile consumer-owned refresh behavior, and update audit coverage and migration links. Verified OpenSpec validation (15/15), formatting, local documentation links and anchors, and whitespace checks. Assisted-by: GPT-6 Signed-off-by: gabemontero <gmontero@redhat.com> * docs(RHIDP-18761): remove obsolete provider planning and dependent examples Remove retired POC provider references, cancelled tasks, configuration and annotation examples, and dependent capability-matching analytics plans from non-archived OpenSpecs. Verified 15 OpenSpec items, formatting, whitespace checks, and zero remaining case-insensitive references in the non-archived Boost OpenSpec tree. Assisted-by: GPT-6 Signed-off-by: gabemontero <gmontero@redhat.com> * docs(RHIDP-18761): address follow-up review findings Remove remaining retired-provider text from companion documentation, preserve individual deferred load-task entries, and replace the obsolete air-gap dependency with surviving specification links. Verified 15 OpenSpec items, formatting, 13 local links and anchors, original task descriptions and deferral markers, whitespace checks, and zero retired-provider references in active OpenSpecs and specifications. Assisted-by: GPT-6 Signed-off-by: gabemontero <gmontero@redhat.com> * docs(boost): address Fullsend review feedback Signed-off-by: gabemontero <gmontero@redhat.com> * docs(openspec): reconcile completed task checklists Signed-off-by: gabemontero <gmontero@redhat.com> * docs(RHIDP-18761): settle agent mapping and refresh audit notes Signed-off-by: gabemontero <gmontero@redhat.com> * docs(RHIDP-18761): reconcile scoped audit findings * docs(RHIDP-18761): correct current browse taxonomy references Signed-off-by: gabemontero <gmontero@redhat.com> * docs(RHIDP-18761): correct annotation source cross-references Signed-off-by: gabemontero <gmontero@redhat.com> --------- Signed-off-by: gabemontero <gmontero@redhat.com> Co-authored-by: fullsend-code <278716306+fullsend-ai-coder[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: gabemontero <gmontero@redhat.com>
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…#5514) Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: Rohit Rai <rohitkrai03@gmail.com>
* docs(RHIDP-18929): triage inherited OpenSpec findings for SDK reconciliation Triage all 26 inherited observations from the RHIDP-18761 cross-artifact audit. Record a disposition for each entry and apply spec corrections where confirmed. Corrections applied: - AiResource casing: update AIResource to AiResource for skill/rule rows in entity-model design, upstream-schema-alignment proposal/design, and annotation-specification spec (AGENTS.md canonical naming) - Entity ref casing: update skill:default/code-review to airesource:default/code-review in eval-hub-integration spec - Scenario heading discipline: restructure orphan ## Scenario headings to #### Scenario under ### Requirement blocks in annotation-specification and migration-readiness-tooling specs - Proposal capabilities: add ## Capabilities sections to entity-model and upstream-schema-alignment proposals following the installed schema pattern - Error normalization: normalize caught unknown values before reading constructor/message/stack in connector design examples - Fault-isolation scoping: scope bucket-empty assertion to first startup - Delta operations: replace EXISTING with ADDED in ca-bundle-resolution and fault-isolation specs - Task clarity: separate malformed PEM from expired cert in CA task, require real backends in integration test task - Scenario step discipline: move non-testable process prerequisites from scenario steps to prose in asset-version-policy spec - Secret redaction: add redaction assertion for config-change audit events consistent with existing failure-event assertion (SDK prerequisite) - Broken references: fix agent-creation-discovery links to point to RHDH-2-1-Legacy-Content path SDK-readiness decision: one SDK prerequisite identified (audit-events secret redaction, finding #17), resolved in this commit. All other findings are spec corrections, deferred design, or owning-feature follow-ups that do not block RHIDP-18762. Related to RHIDP-18929 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(RHIDP-18929): correct triage evidence and SDK handoff Signed-off-by: gabemontero <gmontero@redhat.com> * docs(RHIDP-18929): clarify prerequisite placement and triage scope Signed-off-by: gabemontero <gmontero@redhat.com> --------- Signed-off-by: gabemontero <gmontero@redhat.com> Co-authored-by: fullsend-code <278716306+fullsend-ai-coder[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: gabemontero <gmontero@redhat.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* chore(RHIDP-18801): split boost changeset fixed version group Reduce the fixed group in workspaces/boost/.changeset/config.json to only ai-catalog-common and ai-catalog-connector-utils. Remove ai-catalog, ai-catalog-entity-provider-sdk, and ogx-entity-provider so the SDK, frontend, and OGX provider version independently. The existing updateInternalDependencies: "patch" setting preserves normal dependency propagation — consumers still receive range updates when their dependencies publish a new version. No package versions are changed by this commit. Closes RHIDP-18801 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs(RHIDP-18801): document version grouping and release-plan checks Assisted-by: GPT-6 --------- Co-authored-by: fullsend-code <278716306+fullsend-ai-coder[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: gabemontero <gmontero@redhat.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Hey, I just made a Pull Request!
✔️ Checklist