Skip to content

[hackerone] Initial release of HackerOne with Report data streams#18951

Draft
clement-fouque wants to merge 6 commits into
elastic:mainfrom
clement-fouque:hackerone-new-integration-v5
Draft

[hackerone] Initial release of HackerOne with Report data streams#18951
clement-fouque wants to merge 6 commits into
elastic:mainfrom
clement-fouque:hackerone-new-integration-v5

Conversation

@clement-fouque
Copy link
Copy Markdown
Contributor

Proposed commit message

Checklist

  • I have reviewed tips for building integrations and this pull request is aligned with them.
  • I have verified that all data streams collect metrics or logs.
  • I have added an entry to my package's changelog.yml file.
  • I have verified that Kibana version constraints are current according to guidelines.
  • I have verified that any added dashboard complies with Kibana's Dashboard good practices

Author's Checklist

  • [ ]

How to test this PR locally

Related issues

Screenshots

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 11, 2026

Vale Linting Results

Summary: 9 warnings, 35 suggestions found

⚠️ Warnings (9)
File Line Rule Message
packages/hackerone/docs/README.md 116 Elastic.Latinisms Latin terms and abbreviations are a common source of confusion. Use 'for example' instead of 'e.g'.
packages/hackerone/docs/README.md 116 Elastic.DontUse Don't use 'please'.
packages/hackerone/docs/README.md 359 Elastic.DontUse Don't use 'just'.
packages/hackerone/docs/README.md 375 Elastic.QuotesPunctuation Place punctuation inside closing quotation marks.
packages/hackerone/docs/README.md 375 Elastic.QuotesPunctuation Place punctuation inside closing quotation marks.
packages/hackerone/docs/README.md 488 Elastic.DontUse Don't use 'Thus'.
packages/hackerone/docs/README.md 510 Elastic.Latinisms Latin terms and abbreviations are a common source of confusion. Use 'for example' instead of 'e.g'.
packages/hackerone/docs/README.md 510 Elastic.DontUse Don't use 'please'.
packages/hackerone/docs/README.md 754 Elastic.DontUse Don't use 'just'.
💡 Suggestions (35)
File Line Rule Message
packages/hackerone/_dev/build/docs/README.md 87 Elastic.WordChoice Consider using 'can, might' instead of 'may', unless the term is in the UI.
packages/hackerone/_dev/build/docs/README.md 93 Elastic.Semicolons Use semicolons judiciously.
packages/hackerone/docs/README.md 88 Elastic.WordChoice Consider using 'can, might' instead of 'may', unless the term is in the UI.
packages/hackerone/docs/README.md 94 Elastic.Semicolons Use semicolons judiciously.
packages/hackerone/docs/README.md 106 Elastic.WordChoice Consider using 'can, might' instead of 'may', unless the term is in the UI.
packages/hackerone/docs/README.md 114 Elastic.Wordiness Consider using 'tell' instead of 'inform'.
packages/hackerone/docs/README.md 114 Elastic.WordChoice Consider using 'can, might' instead of 'may', unless the term is in the UI.
packages/hackerone/docs/README.md 114 Elastic.WordChoice Consider using 'can, might' instead of 'may', unless the term is in the UI.
packages/hackerone/docs/README.md 116 Elastic.WordChoice Consider using 'can, might' instead of 'may', unless the term is in the UI.
packages/hackerone/docs/README.md 116 Elastic.WordChoice Consider using 'deactivated, deselected, hidden, turned off, unavailable' instead of 'disabled', unless the term is in the UI.
packages/hackerone/docs/README.md 117 Elastic.WordChoice Consider using 'efficiently' instead of 'simply', unless the term is in the UI.
packages/hackerone/docs/README.md 117 Elastic.WordChoice Consider using 'can, might' instead of 'may', unless the term is in the UI.
packages/hackerone/docs/README.md 124 Elastic.Clone Use cloning only when referring to cloning a GitHub repository or creating a copy that is linked to the original. Often confused with 'copy' and 'duplicate'.
packages/hackerone/docs/README.md 227 Elastic.WordChoice Consider using 'deactivated, deselected, hidden, turned off, unavailable' instead of 'disabled', unless the term is in the UI.
packages/hackerone/docs/README.md 242 Elastic.WordChoice Consider using 'deactivated, deselected, hidden, turned off, unavailable' instead of 'disabled', unless the term is in the UI.
packages/hackerone/docs/README.md 259 Elastic.WordChoice Consider using 'deactivated, deselected, hidden, turned off, unavailable' instead of 'disabled', unless the term is in the UI.
packages/hackerone/docs/README.md 326 Elastic.WordChoice Consider using 'deactivated, deselected, hidden, turned off, unavailable' instead of 'disabled', unless the term is in the UI.
packages/hackerone/docs/README.md 336 Elastic.WordChoice Consider using 'deactivated, deselected, hidden, turned off, unavailable' instead of 'disabled', unless the term is in the UI.
packages/hackerone/docs/README.md 359 Elastic.WordChoice Consider using 'can, might' instead of 'may', unless the term is in the UI.
packages/hackerone/docs/README.md 500 Elastic.WordChoice Consider using 'can, might' instead of 'may', unless the term is in the UI.
packages/hackerone/docs/README.md 508 Elastic.Wordiness Consider using 'tell' instead of 'inform'.
packages/hackerone/docs/README.md 508 Elastic.WordChoice Consider using 'can, might' instead of 'may', unless the term is in the UI.
packages/hackerone/docs/README.md 508 Elastic.WordChoice Consider using 'can, might' instead of 'may', unless the term is in the UI.
packages/hackerone/docs/README.md 510 Elastic.WordChoice Consider using 'can, might' instead of 'may', unless the term is in the UI.
packages/hackerone/docs/README.md 510 Elastic.WordChoice Consider using 'deactivated, deselected, hidden, turned off, unavailable' instead of 'disabled', unless the term is in the UI.
packages/hackerone/docs/README.md 511 Elastic.WordChoice Consider using 'efficiently' instead of 'simply', unless the term is in the UI.
packages/hackerone/docs/README.md 511 Elastic.WordChoice Consider using 'can, might' instead of 'may', unless the term is in the UI.
packages/hackerone/docs/README.md 518 Elastic.Clone Use cloning only when referring to cloning a GitHub repository or creating a copy that is linked to the original. Often confused with 'copy' and 'duplicate'.
packages/hackerone/docs/README.md 621 Elastic.WordChoice Consider using 'deactivated, deselected, hidden, turned off, unavailable' instead of 'disabled', unless the term is in the UI.
packages/hackerone/docs/README.md 636 Elastic.WordChoice Consider using 'deactivated, deselected, hidden, turned off, unavailable' instead of 'disabled', unless the term is in the UI.
packages/hackerone/docs/README.md 653 Elastic.WordChoice Consider using 'deactivated, deselected, hidden, turned off, unavailable' instead of 'disabled', unless the term is in the UI.
packages/hackerone/docs/README.md 720 Elastic.WordChoice Consider using 'deactivated, deselected, hidden, turned off, unavailable' instead of 'disabled', unless the term is in the UI.
packages/hackerone/docs/README.md 730 Elastic.WordChoice Consider using 'deactivated, deselected, hidden, turned off, unavailable' instead of 'disabled', unless the term is in the UI.
packages/hackerone/docs/README.md 754 Elastic.WordChoice Consider using 'can, might' instead of 'may', unless the term is in the UI.
packages/hackerone/docs/README.md 793 Elastic.WordChoice Consider using 'can, might' instead of 'may', unless the term is in the UI.

The Vale linter checks documentation changes against the Elastic Docs style guide.

To use Vale locally or report issues, refer to Elastic style guide for Vale.

@clement-fouque
Copy link
Copy Markdown
Contributor Author

@efd6 can you perform a review of the CEL part? Thanks.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

Comment thread packages/hackerone/data_stream/report/agent/stream/cel.yml.hbs Outdated
Comment thread packages/hackerone/data_stream/report/agent/stream/cel.yml.hbs Outdated
Comment thread packages/hackerone/data_stream/report/agent/stream/cel.yml.hbs Outdated
Comment thread packages/hackerone/data_stream/report/agent/stream/cel.yml.hbs Outdated
Comment thread packages/hackerone/data_stream/report/agent/stream/cel.yml.hbs Outdated
Comment thread packages/hackerone/data_stream/report/agent/stream/cel.yml.hbs Outdated
resp.Body.decode_json().as(body,
{
// Resolve relative `links.next` against state.url; absolute URLs pass through.
"nextResolved": ((body.?links.?next.orValue(null) != null) ? string(body.links.next) : "").as(linkNext,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does the API return null in this case?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe so as response is:

{
  [...],
  "links": {}
}

Copy link
Copy Markdown
Contributor

@efd6 efd6 May 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's not null, that's absence. null would look like this:

{
  [...],
  "links": {"next": null}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If it does, we should not be using "" sentinels.

Comment on lines +137 to +141
"pageMax": body.?data.orValue([]).map(r,
r.attributes.?last_activity_at.orValue(r.attributes.?created_at.orValue(""))
).filter(t, t != "").as(stamps,
(size(stamps) > 0) ? stamps.max() : ""
),
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are we using "" as a sentinel when there is nothing here?

But also,

Suggested change
"pageMax": body.?data.orValue([]).map(r,
r.attributes.?last_activity_at.orValue(r.attributes.?created_at.orValue(""))
).filter(t, t != "").as(stamps,
(size(stamps) > 0) ? stamps.max() : ""
),
"pageMax": body.?data.orValue([]).map(r, has(r.?attributes.last_activity_at) || has(r.?attributes.created_at),
r.attributes.?last_activity_at.orValue(r.attributes.created_at)
).as(stamps,
(size(stamps) > 0) ? stamps.max() : ""
),

Comment thread packages/hackerone/data_stream/report/agent/stream/cel.yml.hbs Outdated
Comment thread packages/hackerone/data_stream/report/agent/stream/cel.yml.hbs Outdated
@andrewkroh andrewkroh added New Integration Issue or pull request for creating a new integration package. documentation Improvements or additions to documentation. Applied to PRs that modify *.md files. labels May 12, 2026
@elastic-vault-github-plugin-prod
Copy link
Copy Markdown

🚀 Benchmarks report

To see the full report comment with /test benchmark fullreport

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@clement-fouque clement-fouque force-pushed the hackerone-new-integration-v5 branch from 7ab7673 to 92037e3 Compare May 14, 2026 16:18
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@clement-fouque clement-fouque force-pushed the hackerone-new-integration-v5 branch from d394b3e to ce28db2 Compare May 14, 2026 16:38
@github-actions

This comment has been minimized.

@github-actions
Copy link
Copy Markdown
Contributor

TL;DR

Buildkite failed before tests ran because the PR commit could not be merged with main (fatal: refusing to merge unrelated histories). Recreate the PR branch from elastic/integrations:main and re-apply your changes, then push again.

Remediation

  • Rebase/cherry-pick your changes onto a branch created from the current upstream main history (not a repo with independent root history), then force-push the PR branch.
  • Re-run Buildkite; this should unblock the checkout/merge step and allow normal CI jobs to start.
Investigation details

Root Cause

The failure happens in the repository post-checkout hook when Buildkite creates pr_merge_18951 and executes:

  • .buildkite/hooks/post-checkout:47git merge --no-edit "${BUILDKITE_COMMIT}"

This merge fails with unrelated histories, which indicates the PR commit lineage does not share ancestry with elastic/integrations target branch history.

Evidence

Switched to a new branch 'pr_merge_18951'
New branch created: pr_merge_18951
fatal: refusing to merge unrelated histories
Merge failed: 128
🚨 Error: running "repository post-checkout" shell hook: The repository post-checkout hook exited with status 128

Verification

  • Not run locally: failure occurs in Buildkite checkout/merge orchestration before repo tests/build steps.

Follow-up

If this branch was intentionally created from a disconnected history, open a fresh branch from upstream main and copy only the integration changes needed for this PR.

Note

🔒 Integrity filter blocked 2 items

The following items were blocked because they don't meet the GitHub integrity level.

To allow these resources, lower min-integrity in your GitHub frontmatter:

tools:
  github:
    min-integrity: approved  # merged | approved | unapproved | none

What is this? | From workflow: PR Buildkite Detective

Give us feedback! React with 🚀 if perfect, 👍 if helpful, 👎 if not.

@clement-fouque clement-fouque requested a review from efd6 May 14, 2026 23:15
@elasticmachine
Copy link
Copy Markdown

💚 Build Succeeded

History

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation. Applied to PRs that modify *.md files. New Integration Issue or pull request for creating a new integration package.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants