Skip to content

[Improvement] Keep Canyon artifacts under .car - #57

Merged
iidsample merged 1 commit into
mainfrom
nickhuo/car-artifact-layout
Sep 4, 2026
Merged

[Improvement] Keep Canyon artifacts under .car#57
iidsample merged 1 commit into
mainfrom
nickhuo/car-artifact-layout

Conversation

@nickhuo

@nickhuo nickhuo commented Aug 29, 2026

Copy link
Copy Markdown
Collaborator

Put all skill porting outputs under .car, mainly adjusting the file paths in build and deploy.

The corresponding skill file change is #67, stacked on this branch. Merge this PR first; #67 retargets to main on its own once this lands.

Scope

ventis only — cli.py, stub_generator.py, global_controller.py, the Local runtime, README.md, .gitignore and the test suite. No .claude/skills/ changes here anymore; those moved to #67.

@coderabbitai

coderabbitai Bot commented Aug 29, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: 6270d560-8f37-4b28-add7-7605d94070bc


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@nickhuo
nickhuo force-pushed the nickhuo/car-artifact-layout branch from 6ae546c to 2423ff3 Compare August 29, 2026 02:06
@nickhuo
nickhuo changed the base branch from jiajunh/can-232-theres-no-mechanism-to-pass-env-secrets-into-the-agent to main August 29, 2026 02:06
@nickhuo
nickhuo changed the base branch from main to jiajunh/can-232-theres-no-mechanism-to-pass-env-secrets-into-the-agent August 29, 2026 02:06
@nickhuo
nickhuo requested a review from iidsample August 29, 2026 03:15
@nickhuo
nickhuo changed the base branch from jiajunh/can-232-theres-no-mechanism-to-pass-env-secrets-into-the-agent to main August 31, 2026 18:29
@nickhuo
nickhuo force-pushed the nickhuo/car-artifact-layout branch 3 times, most recently from d8df835 to e4cdeff Compare September 1, 2026 00:46
@nickhuo
nickhuo requested a review from Saaketh0 September 1, 2026 21:44
@nirajlcc

nirajlcc commented Sep 1, 2026

Copy link
Copy Markdown

Small effort changes

USER line in the Dockerfile, non root. This is a Must fix. Costs one line, closes a real gap.

Skip symlinks in the .car/app rsync, not just in the later per-agent sweep. Again a Must to avoid security issues. Closes a path traversal gap.

Sweep all the files an agent needs, not just .py. Must fix.

Measure the compilation time though for each workload across a few models with this skill file for now, thats short term.

Medium effort

Stage into a temp dir and swap instead of writing straight to final paths. This is a Must. Partial builds leaving a mixed state is a real reliability problem.

Tag images with a build id or digest instead of the static ventis-. this is good to have. Useful for debugging and rollback, but doesn't block anything working today.

Staleness check between .car/app and real source. Again, good to have. Dev experience improvement, the port model already assumes you explicitly re-run it.

Long term

Check for StrictHostKeyChecking=no, on SSH connection - right now its ok but in long term as disabling host key verification will trust whoever answers.

for integrity, hash stubs/grpc_stubs/images and verify against each other so the protobuf mismatch kind of bug gets caught at build time. This is good to have, not must to fix.

Be mindful of full build copies, you want to copy once and not N times its needed. This is what we discussed in standup as performance and user experience issue, not correctness.

@nickhuo
nickhuo force-pushed the nickhuo/car-artifact-layout branch from e4cdeff to 106b9ac Compare September 3, 2026 00:43
@nickhuo nickhuo mentioned this pull request Sep 3, 2026
Comment thread ventis/controller/global_controller.py Outdated

# Add generated grpc_stubs from the local project to the path
sys.path.insert(0, os.path.abspath("grpc_stubs"))
# Add generated grpc_stubs to the path. Commands run from the application

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Will this break existing functionality.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

The context is that the current solution of this PR always assumes the project has a .car folder. If it doesn’t, it will break until the developer runs canyonos integrate to instrument the code and generate the .car.

After discussing with @Saaketh0 , we're planning to set up a fallback like:

prefix(root):
    if isdir(root / ".car"):  return ".car"
    else:  return "" # fall back to legacy logic

Comment thread ventis/controller/global_controller.py Outdated
project_root = os.path.join(script_dir, "..", "..")
default_config = os.path.join(project_root, "config", "global_controller.yaml")
default_config = os.path.join(
os.getcwd(), ".car", "config", "global_controller.yaml"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Same question, what happens if a person just wrote in Ventis.

Comment thread ventis/controller/global_controller.py Outdated
"--config",
default=default_config,
help="Path to the YAML config file (default: config/global_controller.yaml)",
help="Path to the YAML config file (default: .car/config/global_controller.yaml)",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

How will we handle default settings ?

Comment thread ventis/cli.py Outdated
DEFAULT_CONFIG_PATH = "config/global_controller.yaml"
ARTIFACT_DIR_NAME = ".car"
SOURCE_DIR_NAME = "app"
DEFAULT_CONFIG_PATH = f"{ARTIFACT_DIR_NAME}/config/global_controller.yaml"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

same path problem will occur

Comment thread ventis/cli.py Outdated
# policy.yaml declare no `agent.name`, so they fall out here.
yaml_by_name = {}
for yaml_path in yaml_files:
for yaml_path in sorted(glob.glob(os.path.join(config_dir, "*.yaml"))):

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Why do we need sorte ?

@nickhuo
nickhuo force-pushed the nickhuo/car-artifact-layout branch from 106b9ac to 872d72b Compare September 3, 2026 20:33
@nickhuo

nickhuo commented Sep 3, 2026

Copy link
Copy Markdown
Collaborator Author

The latest fallback changes have already been committed, but there’s a new convention we should follow to keep things consistent: for .car, all agent.yaml files should live under the config folder., i.e.

  • For project has .car, all YAML files (global_controller.yaml, policy.yaml, *_agent.yaml) should be placed under /config.
  • But, for the legacy approach without .car we still allows *_agent.yaml to live under the agents/ folder (backward complatible)

If we want to standardize on placing the agent.yaml under /config, we should align on that convention first, or the portfolio will break.

I'll recommend standardize it, i.e. project with .car or without .car should have their agent.yaml under /config

file-afba465a8cddf3e4aa234b45390066df

@iidsample @Saaketh0

@iidsample
iidsample merged commit 1a3a84c into main Sep 4, 2026
4 of 5 checks passed
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