Skip to content

feat(env): Azure Linux 3 sandbox image - #207

Merged
Kavya Sree Kaitepalli (KavyaSree2610) merged 1 commit into
mainfrom
bala/azurelinux-image
Oct 29, 2026
Merged

Kavya Sree Kaitepalli (KavyaSree2610) merged 1 commit into
mainfrom
bala/azurelinux-image

Conversation

@0xba1a

@0xba1a Bala (0xba1a) commented Oct 28, 2026 •

Copy link
Copy Markdown
Member

Summary

Add an Azure Linux 3 sandbox using the stock mcr.microsoft.com/azurelinux/base/core:3.0 image, and let every bot choose its sandbox image with an image parameter.

Like the default Debian image (#202), Azure Linux is not customised: it is prepared on the fly when the environment starts. Its tdnf repos provide the RPM tooling (mock, rpm-build, golang) that later PRs in this stack use for Azure Linux work.

Changes

  • images.py: new constant AZURELINUX_IMAGE = "mcr.microsoft.com/azurelinux/base/core:3.0".
  • Bots: MicroBot, ReadingBot, WritingBot, LogAnalysisBot, BrowsingBot and AgentBoss accept image for the environment they create. It defaults to DEFAULT_IMAGE (Debian). Passing both image and environment raises ValueError, because a provided environment's image is fixed when it is created.
  • CI: the integration jobs pre-pull both stock images.
  • Docs: a new "Sandbox Images" page covering the available images, how a stock image is prepared, choosing an image, and how tools pick distro-specific commands from /etc/os-release.

The base image is minimal, so prepare.sh (from #202) installs Python, shadow-utils, util-linux and git with tdnf before creating the agent account and the server's venv. Preparation takes about 40 seconds, against about 9 seconds for Debian.

Testing

  • Unit: image forwarding for MicroBot and all five subclasses, the default image, rejection of image together with environment, and the image constants. 723 passed. The 7 failures in test_microbot.py::TestMicrobotUnit and test_memory_tool_integration.py also occur on main and come from my local environment.
  • Integration: the new test/environment/local_docker/test_azurelinux_environment.py runs the stock Azure Linux image with READ_ONLY and READ_WRITE mounts. It checks that the shell runs as agent, the distro is detected as azurelinux, tdnf works, and writes reach the host only for READ_WRITE. It also checks that a tool with azurelinux: commands installs while the Debian-only cscope.yaml is rejected with UnsupportedDistroError. I ran CI's integration selection locally: 21 passed, with no new failures compared to main.

Upcoming PRs in this stack

  1. refactor(env): run stock MCR images, prepare the sandbox on the fly #202 (merged): stock MCR images prepared on the fly.
  2. feat(tools): distro-aware tool commands #205 (merged): distro-aware tool commands.
  3. This PR: Azure Linux 3 sandbox and image on the bots.
  4. Optional root_access for the sandbox shell.
  5. rpm / mock / azldev tool definitions.
  6. CopilotBot session_options and skill tracking, so it can use a repository's agent skills.

Base automatically changed from bala/distro-aware-tools to main October 29, 2026 06:49
Add AZURELINUX_IMAGE, the stock mcr.microsoft.com/azurelinux/base/core:3.0
image. It is prepared on the fly like the default image: prepare.sh
installs Python, shadow-utils, util-linux and git with tdnf, then the
usual agent account and server venv (~40s). Its tdnf repos provide RPM
tooling (mock, rpm-build, golang) for Azure Linux work.

- MicroBot, ReadingBot, WritingBot, LogAnalysisBot, BrowsingBot and
  AgentBoss accept `image` for the auto-created environment (rejected
  together with a provided `environment`).
- CI pre-pulls both stock images for the integration tests.
- Docs: "Sandbox Images" page describing the stock images and how they
  are prepared.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@codecov-commenter

Codecov Comments Bot (codecov-commenter) commented Oct 29, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 77.07%. Comparing base (e434933) to head (bb7f941).

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##             main     #207   +/-   ##
=======================================
  Coverage   77.06%   77.07%           
=======================================
  Files          47       47           
  Lines        3192     3197    +5     
=======================================
+ Hits         2460     2464    +4     
- Misses        732      733    +1     
Flag Coverage Δ
ghcp 31.77% <40.00%> (+0.01%) ⬆️
integration 42.35% <80.00%> (+0.21%) ⬆️
ollama_local 34.34% <80.00%> (+0.07%) ⬆️
slow-browser 18.45% <40.00%> (+0.03%) ⬆️
slow-other 39.19% <80.00%> (+0.22%) ⬆️
unit 74.44% <100.00%> (+0.38%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
src/microbots/MicroBot.py 100.00% <100.00%> (ø)
src/microbots/bot/AgentBoss.py 100.00% <ø> (ø)
src/microbots/bot/BrowsingBot.py 100.00% <ø> (ø)
src/microbots/bot/LogAnalysisBot.py 100.00% <ø> (ø)
src/microbots/bot/ReadingBot.py 100.00% <ø> (ø)
src/microbots/bot/WritingBot.py 100.00% <ø> (ø)
src/microbots/environment/local_docker/images.py 100.00% <100.00%> (ø)

... and 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Expecting image parameter for the copilot bot in the future PR

@KavyaSree2610
Kavya Sree Kaitepalli (KavyaSree2610) merged commit 4c2782a into main Oct 29, 2026
10 checks passed
@0xba1a
Bala (0xba1a) deleted the bala/azurelinux-image branch October 29, 2026 08:53
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.

3 participants