Skip to content

fix: register Jira harnesses via base composition, not deprecated overlay - #338

Merged
krishvoor merged 1 commit into
openshift:masterfrom
samanthajayasinghe:fix/fullsend-jira-harness-base-composition
Aug 27, 2026
Merged

fix: register Jira harnesses via base composition, not deprecated overlay#338
krishvoor merged 1 commit into
openshift:masterfrom
samanthajayasinghe:fix/fullsend-jira-harness-base-composition

Conversation

@samanthajayasinghe

@samanthajayasinghe samanthajayasinghe commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Summary

Follow-up to #337. The harnesses added there landed under .fullsend/customized/harness/, but that overlay mechanism is deprecated (ADR-0064) — the customized/ directories contain only .gitkeep placeholders and the overlay loop copies zero files. As a result those harness files were silently ignored and the poller kept loading the upstream triage/code harnesses (which have no trigger: field), so the Jira poll still produced 0 dispatches.

Fix — base composition + explicit registration

  • .fullsend/harness/triage.yaml and .fullsend/harness/code.yaml now inherit from the pinned, checksum-verified upstream harnesses via a base: URL and add the Jira CEL triggers on top. (allowed_remote_resources already permits the fullsend-ai/agents prefix.)
  • Registered both under a new agents: key in .fullsend/config.yaml.
  • Removed the ignored .fullsend/customized/harness/*.yaml files.

Note on naming

The agent name is code, not coder — the role coder maps to agent code, and name: coder would silently no-op.

The #2264 caveat from #337 still applies: built-in agents can't yet fully process Jira work-item payloads (they expect a GitHub issue number, not a Jira key), so dispatched runs may not complete end-to-end until that follow-up lands.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Added configuration for the available triage and coding agents.
    • Linked agent harnesses to verified remote configurations using content-addressed references.
    • Pinned the triage configuration with a SHA-256 integrity hash.

…rlay

The .fullsend/customized/ overlay mechanism is deprecated (ADR-0064) and its
directories contain only .gitkeep placeholders, so harness files dropped there
are copied nowhere and ignored — the poller kept loading the upstream
triage/code harnesses, which have no trigger: field, yielding 0 dispatches.

Switch to base composition + explicit registration:
- .fullsend/harness/triage.yaml and code.yaml inherit from the pinned upstream
  harnesses (checksum-verified) and add the Jira CEL triggers.
- Register both under an agents: key in config.yaml. The agent name must be
  code (role coder maps to agent code; name: coder would silently no-op).
- Remove the ignored .fullsend/customized/harness/ files.

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

coderabbitai Bot commented Aug 27, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 371bdae7-42d8-4318-b88f-95a7441dd617

📥 Commits

Reviewing files that changed from the base of the PR and between 21fd9e6 and db95616.

📒 Files selected for processing (3)
  • .fullsend/config.yaml
  • .fullsend/harness/code.yaml
  • .fullsend/harness/triage.yaml

Included review availability: Your plan provides up to 12 included reviews per hour; 11 remain after this review.


Walkthrough

The Fullsend configuration now registers triage and code agents. Each harness references a pinned remote base configuration with a SHA-256 digest.

Changes

Fullsend agent configuration

Layer / File(s) Summary
Register agents and pin harness sources
.fullsend/config.yaml, .fullsend/harness/*.yaml
The configuration maps triage and code to their harness files. Both harness files define pinned remote base configurations with SHA-256 hashes.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Merge Risk: ⚪ Minimal · up to db956

This localized configuration change is merge-ready after normal checks and review; no actionable merge-blocking risk remains.

🚥 Pre-merge checks | ✅ 15
✅ Passed checks (15 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: registering Jira harnesses through base composition instead of the deprecated overlay mechanism.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed PASS: The pull request changes only .fullsend/config.yaml and two YAML harness files. The diff adds agent registrations, pinned base: URLs, and static Jira trigger expressions. It adds no Ginkgo t…
Test Structure And Quality ✅ Passed PASS: The pull request changes only .fullsend/config.yaml and two harness YAML files. The diff adds agent registration, base URLs, and Jira triggers; it adds no Ginkgo test code, It blocks, setu…
Microshift Test Compatibility ✅ Passed PASS — The pull request changes only .fullsend/config.yaml and two harness YAML files. The exact diff adds agent registration, base URLs, and Jira trigger expressions. It adds no Ginkgo e2e tests or…
Single Node Openshift (Sno) Test Compatibility ✅ Passed The pull request changes only .fullsend YAML configuration and harness files. The HEAD^..HEAD diff contains no Go files or new Ginkgo declarations such as It, Describe, Context, or When. T…
Topology-Aware Scheduling Compatibility ✅ Passed PASS: The pull request changes only Fullsend YAML configuration and harness trigger files. The commit diff adds agent registration, remote base URLs, and Jira CEL triggers, and removes deprecated over…
Ote Binary Stdout Contract ✅ Passed PASS: The pull request changes only .fullsend/config.yaml and two harness YAML files. The diff contains no Go or executable source changes and no process-level stdout APIs or OTE suite setup. The OT…
Ipv6 And Disconnected Network Test Compatibility ✅ Passed PASS: The pull request changes only three YAML configuration/harness files. The exact diff adds agent registration, harness base: URLs, and Jira trigger expressions; it adds no Ginkgo e2e tests (`It…
No-Weak-Crypto ✅ Passed PASS: The pull request changes only Fullsend YAML registration, harness triggers, and pinned sha256 integrity URLs. The patch adds no MD5, SHA1, DES, RC4, 3DES, Blowfish, ECB, custom cryptography, o…
Container-Privileges ✅ Passed PASS. The PR changes only .fullsend configuration and harness YAML files. The diff adds agent registration, remote harness bases, and Jira triggers. It adds no container or Kubernetes manifest and n…
No-Sensitive-Data-In-Logs ✅ Passed PASS: The PR changes only Fullsend YAML configuration. It adds two agent registrations, two pinned upstream base URLs with SHA-256 hashes, and Jira trigger expressions. The exact diff adds no loggin…
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (3 skipped: 3 unsupported.)

Full details: Stable And Deterministic Test Names

Explanation

PASS: The pull request changes only .fullsend/config.yaml and two YAML harness files. The diff adds agent registrations, pinned base: URLs, and static Jira trigger expressions. It adds no Ginkgo test declarations or test titles, and no dynamic values appear in any changed title-like string. Existing repository test names are unchanged and are not caused by this pull request.

Full details: Test Structure And Quality

Explanation

PASS: The pull request changes only .fullsend/config.yaml and two harness YAML files. The diff adds agent registration, base URLs, and Jira triggers; it adds no Ginkgo test code, It blocks, setup, cleanup, waits, or assertions. Therefore this custom check is not applicable.

Full details: Microshift Test Compatibility

Explanation

PASS — The pull request changes only .fullsend/config.yaml and two harness YAML files. The exact diff adds agent registration, base URLs, and Jira trigger expressions. It adds no Ginkgo e2e tests or test cases, so the MicroShift API and feature compatibility check does not apply.

Full details: Single Node Openshift (Sno) Test Compatibility

Explanation

The pull request changes only .fullsend YAML configuration and harness files. The HEAD^..HEAD diff contains no Go files or new Ginkgo declarations such as It, Describe, Context, or When. Therefore, the SNO test compatibility check is not applicable.

Full details: Topology-Aware Scheduling Compatibility

Explanation

PASS: The pull request changes only Fullsend YAML configuration and harness trigger files. The commit diff adds agent registration, remote base URLs, and Jira CEL triggers, and removes deprecated overlay files. It does not add or modify deployment manifests, operator code, controllers, replicas, affinity, topology spread, node selectors, tolerations, or PDBs. The topology-aware scheduling check is therefore not applicable.

Full details: Ote Binary Stdout Contract

Explanation

PASS: The pull request changes only .fullsend/config.yaml and two harness YAML files. The diff contains no Go or executable source changes and no process-level stdout APIs or OTE suite setup. The OTE Binary Stdout Contract is therefore not applicable.

Full details: Ipv6 And Disconnected Network Test Compatibility

Explanation

PASS: The pull request changes only three YAML configuration/harness files. The exact diff adds agent registration, harness base: URLs, and Jira trigger expressions; it adds no Ginkgo e2e tests (It, Describe, Context, or When). The external URLs are configuration inputs, not test connectivity.

Full details: No-Weak-Crypto

Explanation

PASS: The pull request changes only Fullsend YAML registration, harness triggers, and pinned sha256 integrity URLs. The patch adds no MD5, SHA1, DES, RC4, 3DES, Blowfish, ECB, custom cryptography, or secret/token comparisons. The trigger comparisons use Jira event values and command strings, not secrets or tokens.

Full details: Container-Privileges

Explanation

PASS. The PR changes only .fullsend configuration and harness YAML files. The diff adds agent registration, remote harness bases, and Jira triggers. It adds no container or Kubernetes manifest and no privileged: true, hostPID, hostNetwork, hostIPC, SYS_ADMIN, or allowPrivilegeEscalation: true setting. Repository-wide privilege matches are unchanged and use restrictive settings.

Full details: No-Sensitive-Data-In-Logs

Explanation

PASS: The PR changes only Fullsend YAML configuration. It adds two agent registrations, two pinned upstream base URLs with SHA-256 hashes, and Jira trigger expressions. The exact diff adds no logging calls, output commands, credentials, tokens, passwords, PII, or customer data. The Jira workflow output path is unchanged and writes its matrix to GITHUB_OUTPUT, not to a log.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@fullsend-ai-review

fullsend-ai-review Bot commented Aug 27, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 6:10 AM UTC · Completed 6:21 AM UTC

Commit: db95616 · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $2.66

@fullsend-ai-review

Copy link
Copy Markdown

Looks good to me

@fullsend-ai-review fullsend-ai-review Bot added the ready-for-merge All reviewers approved — ready to merge label Aug 27, 2026
@openshift-ci

openshift-ci Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

@samanthajayasinghe: all tests passed!

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@krishvoor

Copy link
Copy Markdown
Member

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Aug 27, 2026
@krishvoor

Copy link
Copy Markdown
Member

/approve

@openshift-ci

openshift-ci Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: krishvoor, samanthajayasinghe
Once this PR has been reviewed and has the lgtm label, please assign bpresnel-rh for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@krishvoor
krishvoor merged commit 0cff87b into openshift:master Aug 27, 2026
55 of 56 checks passed
@fullsend-ai-retro

fullsend-ai-retro Bot commented Aug 27, 2026

Copy link
Copy Markdown

🤖 Finished Retro · ✅ Success · Started 6:38 AM UTC · Completed 6:55 AM UTC

Commit: db95616 · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $6.30

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 65.39%. Comparing base (21fd9e6) to head (db95616).
⚠️ Report is 2 commits behind head on master.

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##           master     #338   +/-   ##
=======================================
  Coverage   65.39%   65.39%           
=======================================
  Files          23       23           
  Lines        1598     1598           
=======================================
  Hits         1045     1045           
  Misses        473      473           
  Partials       80       80           
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@fullsend-ai-retro

fullsend-ai-retro Bot commented Aug 27, 2026

Copy link
Copy Markdown

Retro: PR #338 — fix Jira harness placement (follow-up to #337)

Timeline

PR #337 (04:17–04:36 UTC, 18 min to merge) added Jira CEL triggers for fullsend poll dispatch. The code agent (Claude Code + human operator) placed the harness files under .fullsend/customized/harness/, but that overlay mechanism is deprecated per ADR-0064 — the customized/ directories contain only .gitkeep placeholders and the overlay loop copies zero files. The harness files were silently ignored; the poller continued loading upstream harnesses (which have no trigger: field), producing zero dispatches.

The review agent (Opus, high effort, $2.35) approved #337 with one low-severity finding — a speculative naming mismatch between the file code.yaml and the coder role. This was later assessed as a false positive by the retro on #337. The human reviewer (krishvoor) posted /lgtm with no additional commentary. Neither reviewer caught the fundamental bug.

The retro on #337 ($2.97) correctly identified the review finding as a false positive but incorrectly concluded that "the review agent's coverage was complete for this class of change" and noted "zero rework." It did not detect that the PR was non-functional.

PR #338 (06:08–06:37 UTC, ~1.5 hours after #337 merged) fixed the issue by moving harness files from customized/harness/ to harness/, adding base: URLs with SHA-256 integrity, and registering agents explicitly in config.yaml. The review agent (Opus, high effort, $2.66) correctly approved the fix. The human reviewer again posted /lgtm without commentary.

Root cause

The code generator (Claude Code) lacked knowledge of ADR-0064 — the deprecation of the .fullsend/customized/ overlay mechanism. The repo's CLAUDE.md has extensive Go development documentation but no guidance on fullsend configuration conventions. All three downstream reviewers (review agent, retro agent, human) also lacked this context.

Cost

Total agent cost for the two-PR rework cycle: ~$8+ ($2.35 review + $2.97 retro on #337, $2.66 review + retro on #338). A single correct PR would have halved this.

Evidence for existing issues

Autonomy readiness

For both PRs, the human reviewer posted /lgtm + /approve without additional analytical commentary. On #337, neither the human nor the agent caught the actual bug. On #338, both correctly approved the fix. The review agent matched human review quality on these config-only PRs, but both fell short on #337 — the gap is platform knowledge, not review process. No autonomy change is warranted until the platform knowledge gaps (fullsend#3659, agents#762) are addressed.

Sub-agent model failures

During the #338 review, 2 of 5 sub-agents (intent-coherence, style-conventions) failed due to model unavailability and had to be retried without model override, adding ~2 minutes. This is a transient infrastructure issue but worth noting for patterns.

Proposals filed

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

Labels

lgtm Indicates that a PR is ready to be merged. ready-for-merge All reviewers approved — ready to merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants