Skip to content

Appeng 4906/harbor eval task#8

Merged
GuyZivRH merged 7 commits into
mainfrom
APPENG-4906/harbor-eval-task
Apr 23, 2026
Merged

Appeng 4906/harbor eval task#8
GuyZivRH merged 7 commits into
mainfrom
APPENG-4906/harbor-eval-task

Conversation

@GuyZivRH

Copy link
Copy Markdown
Collaborator

Summary

Changes

Test plan

Related

Python script that reads metadata.yaml and generates a Harbor job config
YAML for A/B evaluation. Supports two modes: prebuilt (digest image refs
from build-push) and local-build (Harbor builds from Dockerfiles).

Extracts n_trials, timeout multipliers, and resource overrides from the
submission's ExperimentConfig and SubmissionMetadata schemas.
Three-step Tekton task that installs Harbor from the fork, generates a
job config from submission metadata, and runs treatment + control trials.
Parses Harbor result.json files to emit pass rates as Tekton results.
Add pipeline-trial-manager Role and RoleBinding granting the pipeline
ServiceAccount permissions for trial Pod lifecycle management: pods,
pods/exec, pods/log (create/get/list/watch/delete), events (get/list),
and secrets (get for LLM credentials).
Document the per-task environment_kwargs change needed in the Harbor
fork's TaskConfig for per-variant image refs in a single sweep config.
Also document WS3A doc alignment items (naming, RBAC, security context).

Update Phase 4 checkboxes: mark fork integration (PR #1), Tekton task,
eval config script, RBAC, and dual eval mode support as done.
- Collapse three Tekton steps into one to fix step isolation (harbor
  binary and config file were not shared across containers)
- Split evaluation into separate Harbor jobs per variant with dedicated
  results directories, eliminating fragile trial classification heuristic
- Add validation guard in build_variant_config for prebuilt mode
- Remove dead compute_pass_rate function from inline parser
- Pin ubi9/python-311 image to :9.6
- Split RBAC verbs per subresource (pods/exec -> create, pods/log -> get)
- Remove --quiet flag to preserve diagnostic output
- Add comments for n_concurrent_trials and agents defaults
- Fix fork URL to GuyZivRH/skills_eval_corrections
- Downgrade per-task environment_kwargs to nice-to-have in docs
- Use VARIANTS constant in generate_eval_configs loop
- Unify Harbor fork URL to RHEcosystemAppEng/skills_eval_corrections
  across all docs (README, implementation_plan, harbor_openshift_backend,
  harbor_fork_requirements)
- Expand harbor_fork_requirements.md with ABEvalFlow-side implementation
  details: per-variant config structure, result directory layout, metadata
  field mapping, eval modes, and Tekton results emitted
- Document three blocking fork requirements (OpenShift env, config-based
  kwargs passthrough, result.json format) with current status
@GuyZivRH GuyZivRH requested a review from RoddieKieley April 16, 2026 10:43

@RoddieKieley RoddieKieley left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I have not as of yet built and utilized the project locally, only cloned and analysed, and thus feedback is non gating and high level.

Some inconsistency was noted between the branch and main in relation to what the docs state and what the code does, but without auto updated docs that's not unusual. For example the harbor_openshift_backend.md file only discusses pre-built container images although elsewhere it discusses local dev but not locally built container images. Looking at the workstreams_roadmap.md however it appears that the doc work is set for the following workstream item which means this would be covered by plan in the future.

In the same harbor_openshift_backend.md I see that the SCC requirements are called out such that trial pods must run with hardened security context which is good, as OpenShift is more specific than "vanilla" kubernetes in that regard.

@GuyZivRH

Copy link
Copy Markdown
Collaborator Author

Thanks for the review Roddie — both observations are spot on.

Doc inconsistency (harbor_openshift_backend.md vs code):

You're right that the handoff doc only describes pre-built mode. The actual implementation (in fork PR #1) supports both pre-built and local-build (podman) modes. Additionally, fork PR #2 has since added per-task environment_kwargs support, which was listed as a nice-to-have in the original doc.

I've updated harbor_openshift_backend.md on this branch to align with the current state:

  • Documented both eval modes (prebuilt + local-build) with their kwargs
  • Updated file path (openshift.py, not openshift_environment.py)
  • Corrected Pod security section (readOnlyRootFilesystem is intentionally unset; HOME=/tmp is used instead)
  • Narrowed RBAC table to what's actually used (Pods, Pods/exec, Pods/log, Secrets, Events)
  • Updated naming to treatment/control throughout
  • Added per-task environment_kwargs and K8s client manager refactor (from fork PR Appeng 4903/tekton triggers and validate task #2)
  • Updated Definition of Done with checked-off items

Also updated harbor_fork_requirements.md to reflect that per-task environment_kwargs is now implemented rather than a nice-to-have.

WS3A doc work planned:

As you noted from workstreams_roadmap.md, the doc alignment is tracked under WS3A. This commit brings the handoff doc current.

SCC requirements:

Thanks for calling this out positively. The restricted-v2 SCC requirement remains — the difference from the original doc is that readOnlyRootFilesystem was relaxed because agent workloads need writes, with HOME=/tmp as the mitigation.

Update harbor_openshift_backend.md to match the current state of the
Harbor fork (PRs #1 and #2):

- Document both eval modes (prebuilt + local-build via podman)
- Fix file path: openshift.py, not openshift_environment.py
- Correct Pod security: readOnlyRootFilesystem intentionally unset,
  HOME=/tmp injected instead
- Narrow RBAC table to actual usage (Pods, exec, log, Secrets, Events)
- Update naming to treatment/control throughout
- Add environment kwargs table (namespace, image_ref, registry,
  cpu_request, tls_verify)
- Document per-task environment_kwargs (fork PR #2)
- Document K8s client manager refactor for concurrent safety (fork PR #2)
- Update Definition of Done with completed items

Update harbor_fork_requirements.md to reflect per-task
environment_kwargs as implemented (no longer nice-to-have).
@GuyZivRH GuyZivRH merged commit 76649d2 into main Apr 23, 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