Repository navigation
feat(harbor): run mini/lite/all by mounting the private suite - #577
Merged
Merged
Conversation
Add overlays/private-data.yaml, a read-only bind mount of AOB_PRIVATE_DIR at /opt/suite/scenarios_data. Any --scenario-root other than the repo's own now copies each scenario there and runs the healthcheck with SCENARIOS_DATA_DIR pointing at it, so manifests' shared/ paths resolve against the private suite's own shared/ directory instead of loading empty collections. With no --scenario-root, output is unchanged apart from the description fix. Also add --skip-missing for profile ids the suite lacks (wosr-62 in all.yaml), stop every task inheriting scenario 1's description and the wosr keyword, and replace the README's push-to-registry code image step with the local-tar flow the sandbox overlay uses. Signed-off-by: Shuxin Lin <linshuhsin@gmail.com>
7 tasks done
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.
Description
Makes the mini, lite and all profiles run correctly on #558. Today their tasks generate, but every trial loads empty CouchDB collections, because the private suite's
shared/data never reaches the container.This is the part of the closed #560 that mini needs, rebased onto
feature/harbor-integration. It leaves outrun.sh, the suite image and--runtime-image.What was wrong
Each scenario's
manifest.jsonnames its data asshared/...paths, andinit_data.pyresolves them against the parent of the scenario folder. The generator copied onlyscenario_<id>/into the task image, so the healthcheck resolvedshared/against the repo's open subset.All 35 mini scenarios reference files that exist only in the private suite. For example, FMEA needs
shared/catalog/assets_fmea.csv, and the repo has onlyassets.csv.The loader skips a missing file with a warning, so the healthcheck passed and the agent ran against empty databases. On #558, three FMEA trials with
gpt-5.6-solgotDatabase does not existfrom the catalog tools and scored 0.0. The oracle cannot see this, because it never touches CouchDB.Changes
overlays/private-data.yaml(new): a read-only bind mount ofAOB_PRIVATE_DIRat/opt/suite/scenarios_data.${AOB_PRIVATE_DIR:?...}, so an unset variable fails with a message naming it, rather than asinvalid spec: :/opt/suite/...: empty section between colons.shared/is not a superset of the repo's. It lackswork_order/workorders.csvand others that scenarios 1–3 need, and itscatalog/*.csvdiffer.adapter/generate_tasks.py:Data folder from
--scenario-root. For any root other than the repo's ownsrc/couchdb/scenarios_data:/opt/suite/scenarios_data/;SCENARIOS_DATA_DIR=/opt/suite/scenarios_data init_data.py <id>;SCENARIOS_DATA_DIRstays on the repo copy.With no root, or the repo's root named explicitly, the output is the same as before apart from the fix below.
--skip-missing: warn about and skip profile ids that the suite lacks, such aswosr-62inall.yaml. Without it, generation stops at the first missing folder.Fix: every task inherited scenario 1's
descriptionand thewosrkeyword.docker push assetopsbench/code:devstep with the local-tar flow the sandbox overlay uses (docker save, thenAOB_CODE_TAR).How to test
The data loaded if no trial's
agent/*.stdout.txtcontainsDatabase does not exist. The README has the Docker-sandbox variant.Type of Change
Industry Relevance
None directly. It lets the published mini, lite and all profiles run under Harbor's per-trial isolation.
Related Issues
Testing & Validation
Generator:
--scenario-rootinit_data.py 1, copy to/opt/aob/src/couchdb/scenarios_data/--scenario-root src/couchdb/scenarios_dataSCENARIOS_DATA_DIR=/opt/suite/scenarios_data init_data.py 913, copy to/opt/suite/scenarios_data/all.yamlwithout / with--skip-missingscenario folder not found/ 231 tasks,wosr-62skipped--runtime-image,--data-dirruff checkandruff format --checkpass ongenerate_tasks.py.uv run pytest src/assetops_harborgives 19 passed.Overlay:
docker compose config, with Harbor'sdocker-compose-build.yaml, the task compose file and the overlay:/opt/suite/scenarios_data;required variable AOB_PRIVATE_DIR is missing a value.Agent runs through the mount:
SCENARIOS_DATA_DIR=/opt/suite/scenarios_data init_data.py 913and passed. The agent made 10 catalog and FMSR tool calls with no errors, and noDatabase does not existappeared.yesagainst a ground truth ofno.noin the run below.gpt-5.6-solaccepts only its default temperature, so its answers vary between runs.Checklist items:
datasets/.Checklist