From e9561ea760101d8ae3a7c6f445d535c8a898edc7 Mon Sep 17 00:00:00 2001 From: "youngtae88.kim" Date: Sat, 9 Aug 2025 15:43:59 +0000 Subject: [PATCH 1/4] Initial plan for creating GitHub Copilot instructions Co-authored-by: Chulhee1Lee <104404644+Chulhee1Lee@users.noreply.github.com> --- IDL2DDS | 1 + clippy_output.txt | 0 clippy_results.log | 13 ++++++++++ dist/reports/clippy_summary.md | 6 +++++ dist/reports/fmt/fmt_summary.md | 6 +++++ etcd.log | 42 +++++++++++++++++++++++++++++++++ fmt_output.txt | 0 fmt_results.log | 13 ++++++++++ test_results.log | 2 ++ 9 files changed, 83 insertions(+) create mode 160000 IDL2DDS create mode 100644 clippy_output.txt create mode 100644 clippy_results.log create mode 100644 dist/reports/clippy_summary.md create mode 100644 dist/reports/fmt/fmt_summary.md create mode 100644 etcd.log create mode 100644 fmt_output.txt create mode 100644 fmt_results.log create mode 100644 test_results.log diff --git a/IDL2DDS b/IDL2DDS new file mode 160000 index 000000000..528578c9f --- /dev/null +++ b/IDL2DDS @@ -0,0 +1 @@ +Subproject commit 528578c9f1012f2e50e9dd48b5b6112dbfc0aa10 diff --git a/clippy_output.txt b/clippy_output.txt new file mode 100644 index 000000000..e69de29bb diff --git a/clippy_results.log b/clippy_results.log new file mode 100644 index 000000000..aa767664d --- /dev/null +++ b/clippy_results.log @@ -0,0 +1,13 @@ +๐Ÿ” Running Cargo clippy... +๐Ÿงช Running Clippy for common (src/common/Cargo.toml) +โœ… Clippy for common passed clean. +๐Ÿงช Running Clippy for apiserver (src/server/apiserver/Cargo.toml) +โœ… Clippy for apiserver passed clean. +๐Ÿงช Running Clippy for tools (src/tools/Cargo.toml) +โœ… Clippy for tools passed clean. +๐Ÿงช Running Clippy for agent (src/agent/Cargo.toml) +โœ… Clippy for agent passed clean. +๐Ÿงช Running Clippy for filtergateway (src/player/filtergateway/Cargo.toml) +โœ… Clippy for filtergateway passed clean. +๐Ÿงช Running Clippy for actioncontroller (src/player/actioncontroller/Cargo.toml) +โœ… Clippy for actioncontroller passed clean. diff --git a/dist/reports/clippy_summary.md b/dist/reports/clippy_summary.md new file mode 100644 index 000000000..e3248cb28 --- /dev/null +++ b/dist/reports/clippy_summary.md @@ -0,0 +1,6 @@ +โœ… Clippy for `common`: **PASSED** +โœ… Clippy for `apiserver`: **PASSED** +โœ… Clippy for `tools`: **PASSED** +โœ… Clippy for `agent`: **PASSED** +โœ… Clippy for `filtergateway`: **PASSED** +โœ… Clippy for `actioncontroller`: **PASSED** diff --git a/dist/reports/fmt/fmt_summary.md b/dist/reports/fmt/fmt_summary.md new file mode 100644 index 000000000..941ed1dbf --- /dev/null +++ b/dist/reports/fmt/fmt_summary.md @@ -0,0 +1,6 @@ +โœ… fmt for common: PASSED +โœ… fmt for apiserver: PASSED +โœ… fmt for tools: PASSED +โœ… fmt for agent: PASSED +โœ… fmt for filtergateway: PASSED +โœ… fmt for actioncontroller: PASSED diff --git a/etcd.log b/etcd.log new file mode 100644 index 000000000..eec9764b9 --- /dev/null +++ b/etcd.log @@ -0,0 +1,42 @@ +{"level":"warn","ts":"2025-08-09T15:22:57.939441Z","caller":"embed/config.go:679","msg":"Running http and grpc server on single port. This is not recommended for production."} +{"level":"info","ts":"2025-08-09T15:22:57.939514Z","caller":"etcdmain/etcd.go:73","msg":"Running: ","args":["etcd","--name","s1","--data-dir","/tmp/etcd-data","--initial-advertise-peer-urls","http://localhost:2380","--listen-peer-urls","http://127.0.0.1:2380","--advertise-client-urls","http://localhost:2379","--listen-client-urls","http://127.0.0.1:2379"]} +{"level":"warn","ts":"2025-08-09T15:22:57.939549Z","caller":"embed/config.go:679","msg":"Running http and grpc server on single port. This is not recommended for production."} +{"level":"info","ts":"2025-08-09T15:22:57.939561Z","caller":"embed/etcd.go:127","msg":"configuring peer listeners","listen-peer-urls":["http://127.0.0.1:2380"]} +{"level":"info","ts":"2025-08-09T15:22:57.939683Z","caller":"embed/etcd.go:135","msg":"configuring client listeners","listen-client-urls":["http://127.0.0.1:2379"]} +{"level":"info","ts":"2025-08-09T15:22:57.939748Z","caller":"embed/etcd.go:308","msg":"starting an etcd server","etcd-version":"3.5.11","git-sha":"3b252db4f","go-version":"go1.20.12","go-os":"linux","go-arch":"amd64","max-cpu-set":4,"max-cpu-available":4,"member-initialized":false,"name":"s1","data-dir":"/tmp/etcd-data","wal-dir":"","wal-dir-dedicated":"","member-dir":"/tmp/etcd-data/member","force-new-cluster":false,"heartbeat-interval":"100ms","election-timeout":"1s","initial-election-tick-advance":true,"snapshot-count":100000,"max-wals":5,"max-snapshots":5,"snapshot-catchup-entries":5000,"initial-advertise-peer-urls":["http://localhost:2380"],"listen-peer-urls":["http://127.0.0.1:2380"],"advertise-client-urls":["http://localhost:2379"],"listen-client-urls":["http://127.0.0.1:2379"],"listen-metrics-urls":[],"cors":["*"],"host-whitelist":["*"],"initial-cluster":"s1=http://localhost:2380","initial-cluster-state":"new","initial-cluster-token":"etcd-cluster","quota-backend-bytes":2147483648,"max-request-bytes":1572864,"max-concurrent-streams":4294967295,"pre-vote":true,"initial-corrupt-check":false,"corrupt-check-time-interval":"0s","compact-check-time-enabled":false,"compact-check-time-interval":"1m0s","auto-compaction-mode":"periodic","auto-compaction-retention":"0s","auto-compaction-interval":"0s","discovery-url":"","discovery-proxy":"","downgrade-check-interval":"5s"} +{"level":"info","ts":"2025-08-09T15:22:57.941003Z","caller":"etcdserver/backend.go:81","msg":"opened backend db","path":"/tmp/etcd-data/member/snap/db","took":"984.495ยตs"} +{"level":"info","ts":"2025-08-09T15:22:57.942598Z","caller":"etcdserver/raft.go:495","msg":"starting local member","local-member-id":"8e9e05c52164694d","cluster-id":"cdf818194e3a8c32"} +{"level":"info","ts":"2025-08-09T15:22:57.942642Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"8e9e05c52164694d switched to configuration voters=()"} +{"level":"info","ts":"2025-08-09T15:22:57.942658Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"8e9e05c52164694d became follower at term 0"} +{"level":"info","ts":"2025-08-09T15:22:57.942665Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"newRaft 8e9e05c52164694d [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]"} +{"level":"info","ts":"2025-08-09T15:22:57.942675Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"8e9e05c52164694d became follower at term 1"} +{"level":"info","ts":"2025-08-09T15:22:57.942704Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"8e9e05c52164694d switched to configuration voters=(10276657743932975437)"} +{"level":"warn","ts":"2025-08-09T15:22:57.943805Z","caller":"auth/store.go:1241","msg":"simple token is not cryptographically signed"} +{"level":"info","ts":"2025-08-09T15:22:57.944585Z","caller":"mvcc/kvstore.go:407","msg":"kvstore restored","current-rev":1} +{"level":"info","ts":"2025-08-09T15:22:57.944909Z","caller":"etcdserver/quota.go:94","msg":"enabled backend quota with default value","quota-name":"v3-applier","quota-size-bytes":2147483648,"quota-size":"2.1 GB"} +{"level":"info","ts":"2025-08-09T15:22:57.94515Z","caller":"etcdserver/server.go:858","msg":"starting etcd server","local-member-id":"8e9e05c52164694d","local-server-version":"3.5.11","cluster-version":"to_be_decided"} +{"level":"info","ts":"2025-08-09T15:22:57.945196Z","caller":"etcdserver/server.go:742","msg":"started as single-node; fast-forwarding election ticks","local-member-id":"8e9e05c52164694d","forward-ticks":9,"forward-duration":"900ms","election-ticks":10,"election-timeout":"1s"} +{"level":"info","ts":"2025-08-09T15:22:57.945296Z","caller":"fileutil/purge.go:44","msg":"started to purge file","dir":"/tmp/etcd-data/member/snap","suffix":"snap.db","max":5,"interval":"30s"} +{"level":"info","ts":"2025-08-09T15:22:57.945349Z","caller":"fileutil/purge.go:44","msg":"started to purge file","dir":"/tmp/etcd-data/member/snap","suffix":"snap","max":5,"interval":"30s"} +{"level":"info","ts":"2025-08-09T15:22:57.945365Z","caller":"fileutil/purge.go:44","msg":"started to purge file","dir":"/tmp/etcd-data/member/wal","suffix":"wal","max":5,"interval":"30s"} +{"level":"info","ts":"2025-08-09T15:22:57.946642Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"8e9e05c52164694d switched to configuration voters=(10276657743932975437)"} +{"level":"info","ts":"2025-08-09T15:22:57.946781Z","caller":"membership/cluster.go:421","msg":"added member","cluster-id":"cdf818194e3a8c32","local-member-id":"8e9e05c52164694d","added-peer-id":"8e9e05c52164694d","added-peer-peer-urls":["http://localhost:2380"]} +{"level":"info","ts":"2025-08-09T15:22:57.94749Z","caller":"embed/etcd.go:596","msg":"serving peer traffic","address":"127.0.0.1:2380"} +{"level":"info","ts":"2025-08-09T15:22:57.947516Z","caller":"embed/etcd.go:568","msg":"cmux::serve","address":"127.0.0.1:2380"} +{"level":"info","ts":"2025-08-09T15:22:57.947511Z","caller":"embed/etcd.go:277","msg":"now serving peer/client/metrics","local-member-id":"8e9e05c52164694d","initial-advertise-peer-urls":["http://localhost:2380"],"listen-peer-urls":["http://127.0.0.1:2380"],"advertise-client-urls":["http://localhost:2379"],"listen-client-urls":["http://127.0.0.1:2379"],"listen-metrics-urls":[]} +{"level":"info","ts":"2025-08-09T15:22:58.943029Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"8e9e05c52164694d is starting a new election at term 1"} +{"level":"info","ts":"2025-08-09T15:22:58.943073Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"8e9e05c52164694d became pre-candidate at term 1"} +{"level":"info","ts":"2025-08-09T15:22:58.943105Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"8e9e05c52164694d received MsgPreVoteResp from 8e9e05c52164694d at term 1"} +{"level":"info","ts":"2025-08-09T15:22:58.943118Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"8e9e05c52164694d became candidate at term 2"} +{"level":"info","ts":"2025-08-09T15:22:58.943124Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"8e9e05c52164694d received MsgVoteResp from 8e9e05c52164694d at term 2"} +{"level":"info","ts":"2025-08-09T15:22:58.943133Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"8e9e05c52164694d became leader at term 2"} +{"level":"info","ts":"2025-08-09T15:22:58.943141Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"raft.node: 8e9e05c52164694d elected leader 8e9e05c52164694d at term 2"} +{"level":"info","ts":"2025-08-09T15:22:58.94349Z","caller":"etcdserver/server.go:2066","msg":"published local member to cluster through raft","local-member-id":"8e9e05c52164694d","local-member-attributes":"{Name:s1 ClientURLs:[http://localhost:2379]}","request-path":"/0/members/8e9e05c52164694d/attributes","cluster-id":"cdf818194e3a8c32","publish-timeout":"7s"} +{"level":"info","ts":"2025-08-09T15:22:58.943498Z","caller":"embed/serve.go:103","msg":"ready to serve client requests"} +{"level":"info","ts":"2025-08-09T15:22:58.943537Z","caller":"etcdserver/server.go:2575","msg":"setting up initial cluster version using v2 API","cluster-version":"3.5"} +{"level":"info","ts":"2025-08-09T15:22:58.943621Z","caller":"etcdmain/main.go:44","msg":"notifying init daemon"} +{"level":"info","ts":"2025-08-09T15:22:58.943657Z","caller":"etcdmain/main.go:50","msg":"successfully notified init daemon"} +{"level":"info","ts":"2025-08-09T15:22:58.943756Z","caller":"membership/cluster.go:584","msg":"set initial cluster version","cluster-id":"cdf818194e3a8c32","local-member-id":"8e9e05c52164694d","cluster-version":"3.5"} +{"level":"info","ts":"2025-08-09T15:22:58.943845Z","caller":"api/capability.go:75","msg":"enabled capabilities for version","cluster-version":"3.5"} +{"level":"info","ts":"2025-08-09T15:22:58.943868Z","caller":"etcdserver/server.go:2599","msg":"cluster version is updated","cluster-version":"3.5"} +{"level":"info","ts":"2025-08-09T15:22:58.944381Z","caller":"embed/serve.go:187","msg":"serving client traffic insecurely; this is strongly discouraged!","traffic":"grpc+http","address":"127.0.0.1:2379"} diff --git a/fmt_output.txt b/fmt_output.txt new file mode 100644 index 000000000..e69de29bb diff --git a/fmt_results.log b/fmt_results.log new file mode 100644 index 000000000..aaa193f23 --- /dev/null +++ b/fmt_results.log @@ -0,0 +1,13 @@ +Running Cargo fmt... +Running fmt for common (src/common/Cargo.toml) +fmt for common passed clean. +Running fmt for apiserver (src/server/apiserver/Cargo.toml) +fmt for apiserver passed clean. +Running fmt for tools (src/tools/Cargo.toml) +fmt for tools passed clean. +Running fmt for agent (src/agent/Cargo.toml) +fmt for agent passed clean. +Running fmt for filtergateway (src/player/filtergateway/Cargo.toml) +fmt for filtergateway passed clean. +Running fmt for actioncontroller (src/player/actioncontroller/Cargo.toml) +fmt for actioncontroller passed clean. diff --git a/test_results.log b/test_results.log new file mode 100644 index 000000000..60640f686 --- /dev/null +++ b/test_results.log @@ -0,0 +1,2 @@ +๐Ÿš€ Running Cargo Tests... +๐Ÿ“ฆ Launching IDL2DDS docker services... From 30c019ff92073ad10fc3c835803e42b237a17c25 Mon Sep 17 00:00:00 2001 From: "youngtae88.kim" Date: Sat, 9 Aug 2025 15:53:43 +0000 Subject: [PATCH 2/4] Add comprehensive GitHub Copilot instructions with validated commands and timings Co-authored-by: Chulhee1Lee <104404644+Chulhee1Lee@users.noreply.github.com> --- .github/copilot-instructions.md | 164 ++++++++++++++++++++++++++++++++ IDL2DDS | 1 - etcd.log | 42 -------- test_results.log | 2 - 4 files changed, 164 insertions(+), 45 deletions(-) create mode 100644 .github/copilot-instructions.md delete mode 160000 IDL2DDS delete mode 100644 etcd.log delete mode 100644 test_results.log diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 000000000..1b9a4f57f --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,164 @@ +# Pullpiri (Vehicle Service Orchestrator) + +**ALWAYS reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the information provided here.** + +Pullpiri is a Rust-based vehicle service orchestrator framework designed to enable efficient deployment and management of cloud-native in-vehicle services and applications. It uses a microservices architecture with server, agent, and player components that work together to orchestrate containerized workloads. + +## Working Effectively + +### Bootstrap and Build - NEVER CANCEL BUILDS +- **CRITICAL**: All build and dependency commands below require long timeouts. NEVER CANCEL these operations. +- Install dependencies: `scripts/installdeps.sh` -- takes 8-10 minutes. NEVER CANCEL. Set timeout to 15+ minutes. +- Build all components: `export PATH="$HOME/.cargo/bin:$PATH" && make build` -- takes 5-7 minutes. NEVER CANCEL. Set timeout to 15+ minutes. +- Format check: `export PATH="$HOME/.cargo/bin:$PATH" && scripts/fmt_check.sh` -- takes 1-2 seconds. +- Lint check: `export PATH="$HOME/.cargo/bin:$PATH" && scripts/clippy_check.sh` -- takes 2-3 minutes. NEVER CANCEL. Set timeout to 10+ minutes. + +### Environment Setup Requirements +- **Operating System**: Tested on CentOS Stream 9, Ubuntu 20.04+ +- **Required Dependencies**: Automatically installed by `scripts/installdeps.sh`: + - Rust toolchain (rustup, cargo, clippy, rustfmt) + - etcd v3.5.11 and etcdctl + - protobuf-compiler + - libdbus-1-dev, libssl-dev, pkg-config + - Docker and Docker Compose + - cargo-deny, cargo2junit +- **Ports Used**: 47001-47099 (gRPC: 47001+, REST: up to 47099), etcd: 2379, 2380 + +### Build Process +- **Direct Build**: Use `make build` for development builds +- **Release Build**: Use `make release` for optimized builds +- **Clean**: Use `make clean` to clean all build artifacts +- **Build Time**: Expect 5-7 minutes for full build. Dependencies download adds 2-3 minutes on first build. + +### Container Operations +- **Builder Images**: `make builder` -- builds development container images. May require elevated permissions. +- **Runtime Images**: `make image` -- builds final container images for deployment. +- **Install Services**: `make install` -- deploys containers as systemd services. Requires root/sudo. +- **Uninstall Services**: `make uninstall` -- stops and removes deployed services. +- **Container Build Issues**: Container builds may fail with permission errors in some environments. Use direct Rust builds instead. + +## Validation and Testing + +### Pre-commit Validation - ALWAYS RUN THESE +- **ALWAYS run these commands before committing changes:** + 1. `export PATH="$HOME/.cargo/bin:$PATH" && scripts/fmt_check.sh` + 2. `export PATH="$HOME/.cargo/bin:$PATH" && scripts/clippy_check.sh` + 3. `export PATH="$HOME/.cargo/bin:$PATH" && make build` + +### Testing +- **Unit Tests**: `cargo test` in any crate directory (src/common, src/server, src/agent, src/player, src/tools) +- **Integration Tests**: Use `scripts/testNparse.sh` -- WARNING: Requires external dependencies and may fail in restricted environments +- **Manual Service Testing**: After building, you can run individual components: + - Server: `cargo run --manifest-path=src/server/apiserver/Cargo.toml` + - Agent: `cargo run --manifest-path=src/agent/nodeagent/Cargo.toml` + - Player: `cargo run --manifest-path=src/player/filtergateway/Cargo.toml` + +### Validation Scenarios +- **After making changes to any Rust code:** + 1. Run formatting check: `scripts/fmt_check.sh` + 2. Run linting: `scripts/clippy_check.sh` + 3. Build affected component: `cargo build --manifest-path=src/{component}/Cargo.toml` + 4. Run unit tests: `cargo test --manifest-path=src/{component}/Cargo.toml` + +## Project Structure and Navigation + +### Key Directories and Files +``` +src/ +โ”œโ”€โ”€ common/ # Shared utilities and gRPC definitions +โ”œโ”€โ”€ server/ +โ”‚ โ”œโ”€โ”€ apiserver/ # Main REST API server (port 47099) +โ”‚ โ”œโ”€โ”€ policymanager/# Policy management service +โ”‚ โ””โ”€โ”€ monitoringserver/ # Monitoring service +โ”œโ”€โ”€ agent/ +โ”‚ โ””โ”€โ”€ nodeagent/ # Node agent for workload management +โ”œโ”€โ”€ player/ +โ”‚ โ”œโ”€โ”€ filtergateway/ # Gateway service (port 47002) +โ”‚ โ”œโ”€โ”€ actioncontroller/ # Action controller (port 47001) +โ”‚ โ””โ”€โ”€ statemanager/ # State management service +โ””โ”€โ”€ tools/ + โ”œโ”€โ”€ ppr/ # Package management tool + โ”œโ”€โ”€ yamlvalidator/ # YAML validation tool + โ””โ”€โ”€ idl2rs/ # IDL to Rust generator + +scripts/ # Build and CI scripts +containers/ # Docker/Podman container definitions +examples/ # Example scenarios and configurations +doc/ # Documentation +settings.yaml # Main configuration file +``` + +### Important Configuration Files +- `settings.yaml` -- Main configuration (etcd endpoints, storage paths, networking) +- `Cargo.toml` files -- Rust project definitions in each component directory +- `containers/piccolo-*.yaml` -- Systemd service definitions for container deployment + +## Common Development Tasks + +### Adding New Features +1. Identify the component to modify (server, agent, player, tools) +2. Make changes in the appropriate `src/{component}/` directory +3. **ALWAYS** run formatting: `scripts/fmt_check.sh` +4. **ALWAYS** run linting: `scripts/clippy_check.sh` +5. Build and test: `cargo build && cargo test` in the component directory +6. Test integration with other components if applicable + +### Working with Dependencies +- Add new Rust dependencies to the appropriate `Cargo.toml` file +- System dependencies should be added to `scripts/installdeps.sh` +- After adding dependencies, rebuild: `make build` + +### Debugging Services +- Check etcd health: `etcdctl --endpoints=http://localhost:2379 endpoint health` +- View service logs when using containers: `podman logs {container-name}` +- For development, run services directly with `cargo run` for better debugging output + +## Troubleshooting + +### Common Issues +- **Build fails with missing dependencies**: Run `scripts/installdeps.sh` to install all required dependencies +- **etcd connection errors**: Ensure etcd is running with `etcdctl endpoint health` +- **Container permission errors**: Use direct Rust builds instead of container builds in restricted environments +- **Port conflicts**: Check that ports 47001-47099 and 2379-2380 are available +- **Formatting/linting failures**: Run `cargo fmt` and `cargo clippy --fix` in the specific component directory + +### Build Time Expectations +- **Dependency installation**: 8-10 minutes (first time only) +- **Full build**: 5-7 minutes +- **Incremental build**: 1-3 minutes +- **Formatting check**: 1-2 seconds +- **Linting check**: 2-3 minutes +- **Container image build**: 10-20 minutes (if permissions allow) + +### Environment Limitations +- Container builds may not work in all environments due to permission restrictions +- Full integration tests require external services that may not be available +- Some advanced features require root access for systemd service management +- Multi-node functionality requires additional network configuration + +## Quick Reference Commands + +### Daily Development Workflow +```bash +# Set up environment (once per session) +export PATH="$HOME/.cargo/bin:$PATH" + +# Before making changes +make build # Verify current state +scripts/fmt_check.sh # Check formatting +scripts/clippy_check.sh # Check linting + +# After making changes +scripts/fmt_check.sh # Fix formatting +scripts/clippy_check.sh # Fix linting issues +make build # Verify build works +cargo test --manifest-path=src/{component}/Cargo.toml # Test your component +``` + +### Essential Validation Sequence +1. `scripts/fmt_check.sh` (1-2 seconds) +2. `scripts/clippy_check.sh` (2-3 minutes, NEVER CANCEL) +3. `make build` (5-7 minutes, NEVER CANCEL) +4. Component-specific `cargo test` (varies by component) + +Always run this sequence before committing changes to ensure CI pipeline success. \ No newline at end of file diff --git a/IDL2DDS b/IDL2DDS deleted file mode 160000 index 528578c9f..000000000 --- a/IDL2DDS +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 528578c9f1012f2e50e9dd48b5b6112dbfc0aa10 diff --git a/etcd.log b/etcd.log deleted file mode 100644 index eec9764b9..000000000 --- a/etcd.log +++ /dev/null @@ -1,42 +0,0 @@ -{"level":"warn","ts":"2025-08-09T15:22:57.939441Z","caller":"embed/config.go:679","msg":"Running http and grpc server on single port. This is not recommended for production."} -{"level":"info","ts":"2025-08-09T15:22:57.939514Z","caller":"etcdmain/etcd.go:73","msg":"Running: ","args":["etcd","--name","s1","--data-dir","/tmp/etcd-data","--initial-advertise-peer-urls","http://localhost:2380","--listen-peer-urls","http://127.0.0.1:2380","--advertise-client-urls","http://localhost:2379","--listen-client-urls","http://127.0.0.1:2379"]} -{"level":"warn","ts":"2025-08-09T15:22:57.939549Z","caller":"embed/config.go:679","msg":"Running http and grpc server on single port. This is not recommended for production."} -{"level":"info","ts":"2025-08-09T15:22:57.939561Z","caller":"embed/etcd.go:127","msg":"configuring peer listeners","listen-peer-urls":["http://127.0.0.1:2380"]} -{"level":"info","ts":"2025-08-09T15:22:57.939683Z","caller":"embed/etcd.go:135","msg":"configuring client listeners","listen-client-urls":["http://127.0.0.1:2379"]} -{"level":"info","ts":"2025-08-09T15:22:57.939748Z","caller":"embed/etcd.go:308","msg":"starting an etcd server","etcd-version":"3.5.11","git-sha":"3b252db4f","go-version":"go1.20.12","go-os":"linux","go-arch":"amd64","max-cpu-set":4,"max-cpu-available":4,"member-initialized":false,"name":"s1","data-dir":"/tmp/etcd-data","wal-dir":"","wal-dir-dedicated":"","member-dir":"/tmp/etcd-data/member","force-new-cluster":false,"heartbeat-interval":"100ms","election-timeout":"1s","initial-election-tick-advance":true,"snapshot-count":100000,"max-wals":5,"max-snapshots":5,"snapshot-catchup-entries":5000,"initial-advertise-peer-urls":["http://localhost:2380"],"listen-peer-urls":["http://127.0.0.1:2380"],"advertise-client-urls":["http://localhost:2379"],"listen-client-urls":["http://127.0.0.1:2379"],"listen-metrics-urls":[],"cors":["*"],"host-whitelist":["*"],"initial-cluster":"s1=http://localhost:2380","initial-cluster-state":"new","initial-cluster-token":"etcd-cluster","quota-backend-bytes":2147483648,"max-request-bytes":1572864,"max-concurrent-streams":4294967295,"pre-vote":true,"initial-corrupt-check":false,"corrupt-check-time-interval":"0s","compact-check-time-enabled":false,"compact-check-time-interval":"1m0s","auto-compaction-mode":"periodic","auto-compaction-retention":"0s","auto-compaction-interval":"0s","discovery-url":"","discovery-proxy":"","downgrade-check-interval":"5s"} -{"level":"info","ts":"2025-08-09T15:22:57.941003Z","caller":"etcdserver/backend.go:81","msg":"opened backend db","path":"/tmp/etcd-data/member/snap/db","took":"984.495ยตs"} -{"level":"info","ts":"2025-08-09T15:22:57.942598Z","caller":"etcdserver/raft.go:495","msg":"starting local member","local-member-id":"8e9e05c52164694d","cluster-id":"cdf818194e3a8c32"} -{"level":"info","ts":"2025-08-09T15:22:57.942642Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"8e9e05c52164694d switched to configuration voters=()"} -{"level":"info","ts":"2025-08-09T15:22:57.942658Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"8e9e05c52164694d became follower at term 0"} -{"level":"info","ts":"2025-08-09T15:22:57.942665Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"newRaft 8e9e05c52164694d [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]"} -{"level":"info","ts":"2025-08-09T15:22:57.942675Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"8e9e05c52164694d became follower at term 1"} -{"level":"info","ts":"2025-08-09T15:22:57.942704Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"8e9e05c52164694d switched to configuration voters=(10276657743932975437)"} -{"level":"warn","ts":"2025-08-09T15:22:57.943805Z","caller":"auth/store.go:1241","msg":"simple token is not cryptographically signed"} -{"level":"info","ts":"2025-08-09T15:22:57.944585Z","caller":"mvcc/kvstore.go:407","msg":"kvstore restored","current-rev":1} -{"level":"info","ts":"2025-08-09T15:22:57.944909Z","caller":"etcdserver/quota.go:94","msg":"enabled backend quota with default value","quota-name":"v3-applier","quota-size-bytes":2147483648,"quota-size":"2.1 GB"} -{"level":"info","ts":"2025-08-09T15:22:57.94515Z","caller":"etcdserver/server.go:858","msg":"starting etcd server","local-member-id":"8e9e05c52164694d","local-server-version":"3.5.11","cluster-version":"to_be_decided"} -{"level":"info","ts":"2025-08-09T15:22:57.945196Z","caller":"etcdserver/server.go:742","msg":"started as single-node; fast-forwarding election ticks","local-member-id":"8e9e05c52164694d","forward-ticks":9,"forward-duration":"900ms","election-ticks":10,"election-timeout":"1s"} -{"level":"info","ts":"2025-08-09T15:22:57.945296Z","caller":"fileutil/purge.go:44","msg":"started to purge file","dir":"/tmp/etcd-data/member/snap","suffix":"snap.db","max":5,"interval":"30s"} -{"level":"info","ts":"2025-08-09T15:22:57.945349Z","caller":"fileutil/purge.go:44","msg":"started to purge file","dir":"/tmp/etcd-data/member/snap","suffix":"snap","max":5,"interval":"30s"} -{"level":"info","ts":"2025-08-09T15:22:57.945365Z","caller":"fileutil/purge.go:44","msg":"started to purge file","dir":"/tmp/etcd-data/member/wal","suffix":"wal","max":5,"interval":"30s"} -{"level":"info","ts":"2025-08-09T15:22:57.946642Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"8e9e05c52164694d switched to configuration voters=(10276657743932975437)"} -{"level":"info","ts":"2025-08-09T15:22:57.946781Z","caller":"membership/cluster.go:421","msg":"added member","cluster-id":"cdf818194e3a8c32","local-member-id":"8e9e05c52164694d","added-peer-id":"8e9e05c52164694d","added-peer-peer-urls":["http://localhost:2380"]} -{"level":"info","ts":"2025-08-09T15:22:57.94749Z","caller":"embed/etcd.go:596","msg":"serving peer traffic","address":"127.0.0.1:2380"} -{"level":"info","ts":"2025-08-09T15:22:57.947516Z","caller":"embed/etcd.go:568","msg":"cmux::serve","address":"127.0.0.1:2380"} -{"level":"info","ts":"2025-08-09T15:22:57.947511Z","caller":"embed/etcd.go:277","msg":"now serving peer/client/metrics","local-member-id":"8e9e05c52164694d","initial-advertise-peer-urls":["http://localhost:2380"],"listen-peer-urls":["http://127.0.0.1:2380"],"advertise-client-urls":["http://localhost:2379"],"listen-client-urls":["http://127.0.0.1:2379"],"listen-metrics-urls":[]} -{"level":"info","ts":"2025-08-09T15:22:58.943029Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"8e9e05c52164694d is starting a new election at term 1"} -{"level":"info","ts":"2025-08-09T15:22:58.943073Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"8e9e05c52164694d became pre-candidate at term 1"} -{"level":"info","ts":"2025-08-09T15:22:58.943105Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"8e9e05c52164694d received MsgPreVoteResp from 8e9e05c52164694d at term 1"} -{"level":"info","ts":"2025-08-09T15:22:58.943118Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"8e9e05c52164694d became candidate at term 2"} -{"level":"info","ts":"2025-08-09T15:22:58.943124Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"8e9e05c52164694d received MsgVoteResp from 8e9e05c52164694d at term 2"} -{"level":"info","ts":"2025-08-09T15:22:58.943133Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"8e9e05c52164694d became leader at term 2"} -{"level":"info","ts":"2025-08-09T15:22:58.943141Z","logger":"raft","caller":"etcdserver/zap_raft.go:77","msg":"raft.node: 8e9e05c52164694d elected leader 8e9e05c52164694d at term 2"} -{"level":"info","ts":"2025-08-09T15:22:58.94349Z","caller":"etcdserver/server.go:2066","msg":"published local member to cluster through raft","local-member-id":"8e9e05c52164694d","local-member-attributes":"{Name:s1 ClientURLs:[http://localhost:2379]}","request-path":"/0/members/8e9e05c52164694d/attributes","cluster-id":"cdf818194e3a8c32","publish-timeout":"7s"} -{"level":"info","ts":"2025-08-09T15:22:58.943498Z","caller":"embed/serve.go:103","msg":"ready to serve client requests"} -{"level":"info","ts":"2025-08-09T15:22:58.943537Z","caller":"etcdserver/server.go:2575","msg":"setting up initial cluster version using v2 API","cluster-version":"3.5"} -{"level":"info","ts":"2025-08-09T15:22:58.943621Z","caller":"etcdmain/main.go:44","msg":"notifying init daemon"} -{"level":"info","ts":"2025-08-09T15:22:58.943657Z","caller":"etcdmain/main.go:50","msg":"successfully notified init daemon"} -{"level":"info","ts":"2025-08-09T15:22:58.943756Z","caller":"membership/cluster.go:584","msg":"set initial cluster version","cluster-id":"cdf818194e3a8c32","local-member-id":"8e9e05c52164694d","cluster-version":"3.5"} -{"level":"info","ts":"2025-08-09T15:22:58.943845Z","caller":"api/capability.go:75","msg":"enabled capabilities for version","cluster-version":"3.5"} -{"level":"info","ts":"2025-08-09T15:22:58.943868Z","caller":"etcdserver/server.go:2599","msg":"cluster version is updated","cluster-version":"3.5"} -{"level":"info","ts":"2025-08-09T15:22:58.944381Z","caller":"embed/serve.go:187","msg":"serving client traffic insecurely; this is strongly discouraged!","traffic":"grpc+http","address":"127.0.0.1:2379"} diff --git a/test_results.log b/test_results.log deleted file mode 100644 index 60640f686..000000000 --- a/test_results.log +++ /dev/null @@ -1,2 +0,0 @@ -๐Ÿš€ Running Cargo Tests... -๐Ÿ“ฆ Launching IDL2DDS docker services... From 04529d56597908db07621a10a522ebde56300570 Mon Sep 17 00:00:00 2001 From: "youngtae88.kim" Date: Mon, 18 Aug 2025 15:40:40 +0900 Subject: [PATCH 3/4] delete unnecessary files --- clippy_output.txt | 0 clippy_results.log | 13 ------------- dist/reports/clippy_summary.md | 6 ------ dist/reports/fmt/fmt_summary.md | 6 ------ fmt_output.txt | 0 fmt_results.log | 13 ------------- 6 files changed, 38 deletions(-) delete mode 100644 clippy_output.txt delete mode 100644 clippy_results.log delete mode 100644 dist/reports/clippy_summary.md delete mode 100644 dist/reports/fmt/fmt_summary.md delete mode 100644 fmt_output.txt delete mode 100644 fmt_results.log diff --git a/clippy_output.txt b/clippy_output.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/clippy_results.log b/clippy_results.log deleted file mode 100644 index aa767664d..000000000 --- a/clippy_results.log +++ /dev/null @@ -1,13 +0,0 @@ -๐Ÿ” Running Cargo clippy... -๐Ÿงช Running Clippy for common (src/common/Cargo.toml) -โœ… Clippy for common passed clean. -๐Ÿงช Running Clippy for apiserver (src/server/apiserver/Cargo.toml) -โœ… Clippy for apiserver passed clean. -๐Ÿงช Running Clippy for tools (src/tools/Cargo.toml) -โœ… Clippy for tools passed clean. -๐Ÿงช Running Clippy for agent (src/agent/Cargo.toml) -โœ… Clippy for agent passed clean. -๐Ÿงช Running Clippy for filtergateway (src/player/filtergateway/Cargo.toml) -โœ… Clippy for filtergateway passed clean. -๐Ÿงช Running Clippy for actioncontroller (src/player/actioncontroller/Cargo.toml) -โœ… Clippy for actioncontroller passed clean. diff --git a/dist/reports/clippy_summary.md b/dist/reports/clippy_summary.md deleted file mode 100644 index e3248cb28..000000000 --- a/dist/reports/clippy_summary.md +++ /dev/null @@ -1,6 +0,0 @@ -โœ… Clippy for `common`: **PASSED** -โœ… Clippy for `apiserver`: **PASSED** -โœ… Clippy for `tools`: **PASSED** -โœ… Clippy for `agent`: **PASSED** -โœ… Clippy for `filtergateway`: **PASSED** -โœ… Clippy for `actioncontroller`: **PASSED** diff --git a/dist/reports/fmt/fmt_summary.md b/dist/reports/fmt/fmt_summary.md deleted file mode 100644 index 941ed1dbf..000000000 --- a/dist/reports/fmt/fmt_summary.md +++ /dev/null @@ -1,6 +0,0 @@ -โœ… fmt for common: PASSED -โœ… fmt for apiserver: PASSED -โœ… fmt for tools: PASSED -โœ… fmt for agent: PASSED -โœ… fmt for filtergateway: PASSED -โœ… fmt for actioncontroller: PASSED diff --git a/fmt_output.txt b/fmt_output.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/fmt_results.log b/fmt_results.log deleted file mode 100644 index aaa193f23..000000000 --- a/fmt_results.log +++ /dev/null @@ -1,13 +0,0 @@ -Running Cargo fmt... -Running fmt for common (src/common/Cargo.toml) -fmt for common passed clean. -Running fmt for apiserver (src/server/apiserver/Cargo.toml) -fmt for apiserver passed clean. -Running fmt for tools (src/tools/Cargo.toml) -fmt for tools passed clean. -Running fmt for agent (src/agent/Cargo.toml) -fmt for agent passed clean. -Running fmt for filtergateway (src/player/filtergateway/Cargo.toml) -fmt for filtergateway passed clean. -Running fmt for actioncontroller (src/player/actioncontroller/Cargo.toml) -fmt for actioncontroller passed clean. From 32267f37ee4f22e079fab82bed3a576374109be6 Mon Sep 17 00:00:00 2001 From: Youngtae Kim Date: Mon, 18 Aug 2025 15:42:25 +0900 Subject: [PATCH 4/4] Update .github/copilot-instructions.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/copilot-instructions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 1b9a4f57f..4057869b4 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -1,6 +1,6 @@ # Pullpiri (Vehicle Service Orchestrator) -**ALWAYS reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the information provided here.** +**ALWAYS reference these instructions first. If you encounter unexpected information not covered here, you may: (1) search the project documentation, codebase, or official resources; (2) use only the bash commands explicitly listed in this document or standard diagnostic commands (e.g., `ls`, `cat`, `pwd`). If these steps do not resolve your issue, escalate by contacting a maintainer or opening an issue.** Pullpiri is a Rust-based vehicle service orchestrator framework designed to enable efficient deployment and management of cloud-native in-vehicle services and applications. It uses a microservices architecture with server, agent, and player components that work together to orchestrate containerized workloads.