clousight-bench 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- clousight_bench-0.2.0/.dockerignore +37 -0
- clousight_bench-0.2.0/.github/CODEOWNERS +16 -0
- clousight_bench-0.2.0/.github/ISSUE_TEMPLATE/bug_report.yml +54 -0
- clousight_bench-0.2.0/.github/ISSUE_TEMPLATE/config.yml +8 -0
- clousight_bench-0.2.0/.github/ISSUE_TEMPLATE/feature_request.yml +40 -0
- clousight_bench-0.2.0/.github/PULL_REQUEST_TEMPLATE.md +26 -0
- clousight_bench-0.2.0/.github/dependabot.yml +25 -0
- clousight_bench-0.2.0/.github/workflows/ci.yml +216 -0
- clousight_bench-0.2.0/.github/workflows/codeql.yml +31 -0
- clousight_bench-0.2.0/.github/workflows/dependency-review.yml +21 -0
- clousight_bench-0.2.0/.github/workflows/docs.yml +52 -0
- clousight_bench-0.2.0/.github/workflows/release.yml +57 -0
- clousight_bench-0.2.0/.gitignore +31 -0
- clousight_bench-0.2.0/.gitsync.env.example +6 -0
- clousight_bench-0.2.0/AGENTS.md +10 -0
- clousight_bench-0.2.0/CHANGELOG.md +188 -0
- clousight_bench-0.2.0/CITATION.cff +25 -0
- clousight_bench-0.2.0/CODE_OF_CONDUCT.md +132 -0
- clousight_bench-0.2.0/CONTRIBUTING.md +101 -0
- clousight_bench-0.2.0/GOVERNANCE.md +55 -0
- clousight_bench-0.2.0/LICENSE +202 -0
- clousight_bench-0.2.0/MAINTAINERS.md +23 -0
- clousight_bench-0.2.0/NOTICE +13 -0
- clousight_bench-0.2.0/PKG-INFO +272 -0
- clousight_bench-0.2.0/README.md +206 -0
- clousight_bench-0.2.0/ROADMAP.md +81 -0
- clousight_bench-0.2.0/SECURITY.md +118 -0
- clousight_bench-0.2.0/SUPPORT.md +26 -0
- clousight_bench-0.2.0/configs/agent-runtime.aliyun.example.yaml +36 -0
- clousight_bench-0.2.0/configs/agent-runtime.huawei.example.yaml +11 -0
- clousight_bench-0.2.0/configs/agent-runtime.volcengine.example.yaml +13 -0
- clousight_bench-0.2.0/configs/aliyun-agentrun-full.plan.yaml +40 -0
- clousight_bench-0.2.0/configs/bigdata-emr.aws.example.yaml +18 -0
- clousight_bench-0.2.0/configs/local-sim.fail-fast.yaml +9 -0
- clousight_bench-0.2.0/docs/RELEASING.md +44 -0
- clousight_bench-0.2.0/docs/agentrun-integration-research.md +84 -0
- clousight_bench-0.2.0/docs/architecture.md +367 -0
- clousight_bench-0.2.0/docs/dataset-tiers.md +99 -0
- clousight_bench-0.2.0/docs/index.md +46 -0
- clousight_bench-0.2.0/docs/plans/2026-08-14-ecs-mode-orchestration-plan.md +287 -0
- clousight_bench-0.2.0/docs/plans/2026-08-16-report-echarts.md +830 -0
- clousight_bench-0.2.0/docs/plugins.md +99 -0
- clousight_bench-0.2.0/docs/probe-carrier.md +198 -0
- clousight_bench-0.2.0/docs/querying.md +124 -0
- clousight_bench-0.2.0/docs/reference.md +32 -0
- clousight_bench-0.2.0/docs/reporting.md +101 -0
- clousight_bench-0.2.0/docs/runbooks/prod-smoke.md +72 -0
- clousight_bench-0.2.0/docs/specs/2026-08-14-ecs-mode-orchestration-design.md +275 -0
- clousight_bench-0.2.0/docs/specs/2026-08-16-report-echarts-design.md +192 -0
- clousight_bench-0.2.0/docs/superpowers/specs/2026-07-27-phase1c-run-plans-and-statistics-design.md +167 -0
- clousight_bench-0.2.0/examples/README.md +49 -0
- clousight_bench-0.2.0/examples/asset-manifests/README.md +62 -0
- clousight_bench-0.2.0/examples/asset-manifests/agent-runtime.held-out-keys.private.yaml +26 -0
- clousight_bench-0.2.0/examples/asset-manifests/agent-runtime.swe-bench-lite.remote.yaml +28 -0
- clousight_bench-0.2.0/examples/asset-manifests/bigdata-emr.bundled.example.yaml +21 -0
- clousight_bench-0.2.0/examples/asset-manifests/bigdata-emr.nyc-taxi.remote.yaml +29 -0
- clousight_bench-0.2.0/examples/asset-manifests/retrieval.hotpotqa.remote.yaml +23 -0
- clousight_bench-0.2.0/examples/run-plan-example.yaml +20 -0
- clousight_bench-0.2.0/infra/agent-runtime-aliyun.local.yaml.example +14 -0
- clousight_bench-0.2.0/infra/mock-tools-fc/bootstrap +4 -0
- clousight_bench-0.2.0/infra/mock-tools-fc/data/prices.json +34 -0
- clousight_bench-0.2.0/infra/mock-tools-fc/data/resources.json +49 -0
- clousight_bench-0.2.0/infra/mock-tools-fc/entry.py +31 -0
- clousight_bench-0.2.0/infra/mock-tools-fc/mock_tools.py +291 -0
- clousight_bench-0.2.0/infra/terraform/README.md +28 -0
- clousight_bench-0.2.0/infra/terraform/aliyun-iam/.terraform.lock.hcl +63 -0
- clousight_bench-0.2.0/infra/terraform/aliyun-iam/README.md +126 -0
- clousight_bench-0.2.0/infra/terraform/aliyun-iam/controller.tf +215 -0
- clousight_bench-0.2.0/infra/terraform/aliyun-iam/main.tf +659 -0
- clousight_bench-0.2.0/infra/terraform/aliyun-iam/outputs.tf +124 -0
- clousight_bench-0.2.0/infra/terraform/aliyun-iam/policies/agentrun.json.tpl +33 -0
- clousight_bench-0.2.0/infra/terraform/aliyun-iam/set-arms-retention.sh +33 -0
- clousight_bench-0.2.0/infra/terraform/aliyun-iam/terraform.tfvars.example +32 -0
- clousight_bench-0.2.0/infra/terraform/aliyun-iam/variables.tf +190 -0
- clousight_bench-0.2.0/infra/terraform/aws-agentcore/.terraform.lock.hcl +67 -0
- clousight_bench-0.2.0/infra/terraform/aws-agentcore/main.tf +435 -0
- clousight_bench-0.2.0/infra/terraform/aws-agentcore/outputs.tf +92 -0
- clousight_bench-0.2.0/infra/terraform/aws-agentcore/variables.tf +100 -0
- clousight_bench-0.2.0/infra/terraform/aws-agentcore/versions.tf +28 -0
- clousight_bench-0.2.0/infra/terraform/aws-emr/iam.tf +63 -0
- clousight_bench-0.2.0/infra/terraform/aws-emr/main.tf +110 -0
- clousight_bench-0.2.0/infra/terraform/aws-emr/terraform.tfvars.example +8 -0
- clousight_bench-0.2.0/infra/terraform/mock-tools-lambda/handler.py +41 -0
- clousight_bench-0.2.0/mkdocs.yml +53 -0
- clousight_bench-0.2.0/pyproject.toml +171 -0
- clousight_bench-0.2.0/scripts/gen_docs.py +129 -0
- clousight_bench-0.2.0/scripts/gitsync.sh +147 -0
- clousight_bench-0.2.0/scripts/setup-labels.sh +58 -0
- clousight_bench-0.2.0/src/clousight_bench/__init__.py +18 -0
- clousight_bench-0.2.0/src/clousight_bench/cli.py +1260 -0
- clousight_bench-0.2.0/src/clousight_bench/core/__init__.py +6 -0
- clousight_bench-0.2.0/src/clousight_bench/core/analytics.py +271 -0
- clousight_bench-0.2.0/src/clousight_bench/core/assets.py +160 -0
- clousight_bench-0.2.0/src/clousight_bench/core/billing.py +69 -0
- clousight_bench-0.2.0/src/clousight_bench/core/campaign.py +206 -0
- clousight_bench-0.2.0/src/clousight_bench/core/campaign_spec.py +98 -0
- clousight_bench-0.2.0/src/clousight_bench/core/canonical.py +56 -0
- clousight_bench-0.2.0/src/clousight_bench/core/clients.py +178 -0
- clousight_bench-0.2.0/src/clousight_bench/core/conformance.py +110 -0
- clousight_bench-0.2.0/src/clousight_bench/core/controller.py +85 -0
- clousight_bench-0.2.0/src/clousight_bench/core/controller_main.py +315 -0
- clousight_bench-0.2.0/src/clousight_bench/core/cost_budget.py +70 -0
- clousight_bench-0.2.0/src/clousight_bench/core/cost_notice.py +43 -0
- clousight_bench-0.2.0/src/clousight_bench/core/credentials.py +175 -0
- clousight_bench-0.2.0/src/clousight_bench/core/endpoints.py +108 -0
- clousight_bench-0.2.0/src/clousight_bench/core/errors.py +21 -0
- clousight_bench-0.2.0/src/clousight_bench/core/fingerprints.py +94 -0
- clousight_bench-0.2.0/src/clousight_bench/core/inventory.py +66 -0
- clousight_bench-0.2.0/src/clousight_bench/core/live_guard.py +67 -0
- clousight_bench-0.2.0/src/clousight_bench/core/migrate.py +280 -0
- clousight_bench-0.2.0/src/clousight_bench/core/observation.py +158 -0
- clousight_bench-0.2.0/src/clousight_bench/core/orchestrator.py +1261 -0
- clousight_bench-0.2.0/src/clousight_bench/core/persistence.py +74 -0
- clousight_bench-0.2.0/src/clousight_bench/core/plugin.py +340 -0
- clousight_bench-0.2.0/src/clousight_bench/core/preflight.py +166 -0
- clousight_bench-0.2.0/src/clousight_bench/core/prod_submit.py +174 -0
- clousight_bench-0.2.0/src/clousight_bench/core/publish.py +376 -0
- clousight_bench-0.2.0/src/clousight_bench/core/reaper_base.py +73 -0
- clousight_bench-0.2.0/src/clousight_bench/core/record.py +288 -0
- clousight_bench-0.2.0/src/clousight_bench/core/redaction.py +160 -0
- clousight_bench-0.2.0/src/clousight_bench/core/registry.py +260 -0
- clousight_bench-0.2.0/src/clousight_bench/core/report.py +527 -0
- clousight_bench-0.2.0/src/clousight_bench/core/reporting/__init__.py +0 -0
- clousight_bench-0.2.0/src/clousight_bench/core/reporting/assets/__init__.py +0 -0
- clousight_bench-0.2.0/src/clousight_bench/core/reporting/assets/echarts.min.js +45 -0
- clousight_bench-0.2.0/src/clousight_bench/core/reporting/bundle.py +329 -0
- clousight_bench-0.2.0/src/clousight_bench/core/reporting/profiles/__init__.py +314 -0
- clousight_bench-0.2.0/src/clousight_bench/core/reporting/renderers/__init__.py +0 -0
- clousight_bench-0.2.0/src/clousight_bench/core/reporting/renderers/base.py +13 -0
- clousight_bench-0.2.0/src/clousight_bench/core/reporting/renderers/brand.py +70 -0
- clousight_bench-0.2.0/src/clousight_bench/core/reporting/renderers/charts_js.py +40 -0
- clousight_bench-0.2.0/src/clousight_bench/core/reporting/renderers/echarts.py +282 -0
- clousight_bench-0.2.0/src/clousight_bench/core/reporting/renderers/html.py +388 -0
- clousight_bench-0.2.0/src/clousight_bench/core/reporting/renderers/i18n.py +235 -0
- clousight_bench-0.2.0/src/clousight_bench/core/reporting/renderers/svg.py +148 -0
- clousight_bench-0.2.0/src/clousight_bench/core/resource_ledger.py +90 -0
- clousight_bench-0.2.0/src/clousight_bench/core/resource_reconcile.py +88 -0
- clousight_bench-0.2.0/src/clousight_bench/core/resource_tags.py +31 -0
- clousight_bench-0.2.0/src/clousight_bench/core/resources.py +18 -0
- clousight_bench-0.2.0/src/clousight_bench/core/rollup.py +47 -0
- clousight_bench-0.2.0/src/clousight_bench/core/runplan.py +321 -0
- clousight_bench-0.2.0/src/clousight_bench/core/sampling.py +31 -0
- clousight_bench-0.2.0/src/clousight_bench/core/sandbox.py +127 -0
- clousight_bench-0.2.0/src/clousight_bench/core/schema.py +45 -0
- clousight_bench-0.2.0/src/clousight_bench/core/schema_validate.py +65 -0
- clousight_bench-0.2.0/src/clousight_bench/core/statistics.py +171 -0
- clousight_bench-0.2.0/src/clousight_bench/core/stats.py +41 -0
- clousight_bench-0.2.0/src/clousight_bench/core/store.py +540 -0
- clousight_bench-0.2.0/src/clousight_bench/core/traceview.py +127 -0
- clousight_bench-0.2.0/src/clousight_bench/core/tracing.py +166 -0
- clousight_bench-0.2.0/src/clousight_bench/core/usage.py +53 -0
- clousight_bench-0.2.0/src/clousight_bench/core/validation.py +87 -0
- clousight_bench-0.2.0/src/clousight_bench/core/versioning.py +61 -0
- clousight_bench-0.2.0/src/clousight_bench/core/watchdog.py +60 -0
- clousight_bench-0.2.0/src/clousight_bench/core/workload.py +222 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/__init__.py +1 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/__init__.py +121 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/adapters/__init__.py +1 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/adapters/aws_clouds.py +73 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/adapters/base.py +677 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/adapters/cn_clouds.py +123 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/adapters/local_sim.py +31 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/adapters/managed.py +317 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/adapters/transport.py +846 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/agent_bundle/README.md +46 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/agent_bundle/__init__.py +5 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/agent_bundle/agent.py +383 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/agent_bundle/lc_agent.py +339 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/aliyun.py +2118 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/artifact.py +237 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/aws/__init__.py +0 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/aws/campaign_probe.py +90 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/aws/carrier.py +251 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/aws/provider.py +42 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/aws/reaper.py +123 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/aws/transport.py +1231 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/campaign_probe_base.py +131 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/carrier_base.py +129 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/controller_reaper.py +63 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/data/prices.json +34 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/data/resources.json +49 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/dataplane_dispatch.py +326 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/dev_wheel.py +169 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/ecs_carrier.py +331 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/mock_tools.py +291 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/openinference.py +131 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/permissions.py +38 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/probe/__init__.py +1 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/probe/agent_loop.py +228 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/probe/campaign_channel.py +129 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/probe/client.py +72 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/probe/dataplane.py +1410 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/probe/invoke.py +315 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/probe/jobs.py +137 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/probe/oss_channel.py +295 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/probe/oss_client.py +205 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/probe/oss_dispatch_client.py +101 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/probe/oss_sink.py +71 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/probe/oss_sync.py +72 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/probe/runner.py +74 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/probe/s3_client.py +136 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/probe/server.py +134 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/protocol.py +103 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/reaper.py +244 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/session_memory.py +53 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/__init__.py +1 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t0_1_provision_latency.py +166 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t0_2_teardown_cleanliness.py +111 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t1_10_retry_storm.py +123 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t1_11_concurrent_writes.py +85 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t1_12_head_of_line.py +110 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t1_13_startup_curve.py +137 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t1_14_idle_timeout_honor.py +155 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t1_1_startup_latency.py +133 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t1_2_state_persistence.py +82 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t1_3_fault_recovery.py +117 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t1_4_sustained_load.py +162 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t1_5_warm_retention.py +139 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t1_6_soak.py +101 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t1_7_rate_limit.py +119 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t1_8_cancellation.py +104 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t1_9_ttft.py +118 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t2_1_tool_registration.py +90 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t4_1_trace_completeness.py +148 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t4_2_otel_export.py +132 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t4_3_signals.py +124 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t4_4_span_propagation.py +106 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t4_5_export_latency.py +98 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t5_1_cost_attribution.py +122 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t5_2_elasticity.py +122 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t5_3_idle_cost.py +113 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t5_4_concurrency_ceiling.py +65 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/tasks/t6_1_isolation.py +153 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/agent_runtime/transport_base.py +61 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/bigdata_emr/__init__.py +32 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/bigdata_emr/adapters/__init__.py +1 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/bigdata_emr/adapters/aws_emr.py +57 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/bigdata_emr/adapters/base.py +32 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/bigdata_emr/adapters/local_process.py +32 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/bigdata_emr/tasks/__init__.py +1 -0
- clousight_bench-0.2.0/src/clousight_bench/domains/bigdata_emr/tasks/j1_1_wordcount.py +116 -0
- clousight_bench-0.2.0/src/clousight_bench/enrichers/__init__.py +6 -0
- clousight_bench-0.2.0/src/clousight_bench/enrichers/data/pricing.seed.json +94 -0
- clousight_bench-0.2.0/src/clousight_bench/enrichers/pricing.py +156 -0
- clousight_bench-0.2.0/src/clousight_bench/py.typed +0 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/__init__.py +1 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/brand/logo.png +0 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/brand/providers/alibaba.svg +3 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/brand/providers/aws.svg +6 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/brand/providers/azure.svg +23 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/brand/providers/gcp.svg +6 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/brand/providers/huawei.svg +3 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/brand/providers/ibm.svg +39 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/brand/providers/oracle.svg +3 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/brand/providers/ovh.svg +3 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/brand/providers/tencent.svg +5 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/schemas/result-record-0.2.schema.json +23 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/schemas/runspec.schema.json +13 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/schemas/workload-manifest.schema.json +14 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/workloads/__init__.py +1 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/workloads/gsm8k-stats/manifest.yaml +23 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/workloads/gsm8k-stats/run.py +72 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/workloads/synthetic-sampler/manifest.yaml +6 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/workloads/synthetic-sampler/run.py +35 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/workloads/wordcount-py/manifest.yaml +17 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/workloads/wordcount-py/run.py +67 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/workloads/ycsb-wrapper/manifest.yaml +24 -0
- clousight_bench-0.2.0/src/clousight_bench/resources/workloads/ycsb-wrapper/run.sh +76 -0
- clousight_bench-0.2.0/tests/__init__.py +0 -0
- clousight_bench-0.2.0/tests/conftest.py +138 -0
- clousight_bench-0.2.0/tests/test_agent_artifact.py +43 -0
- clousight_bench-0.2.0/tests/test_agent_build.py +12 -0
- clousight_bench-0.2.0/tests/test_agent_correlation_passthrough.py +29 -0
- clousight_bench-0.2.0/tests/test_agent_openai.py +33 -0
- clousight_bench-0.2.0/tests/test_agent_retry_policy.py +122 -0
- clousight_bench-0.2.0/tests/test_agent_runtime_cost_isolation.py +80 -0
- clousight_bench-0.2.0/tests/test_agent_runtime_dimensions.py +65 -0
- clousight_bench-0.2.0/tests/test_agent_runtime_dimensions_t5.py +118 -0
- clousight_bench-0.2.0/tests/test_agent_runtime_local.py +59 -0
- clousight_bench-0.2.0/tests/test_agent_runtime_observability.py +90 -0
- clousight_bench-0.2.0/tests/test_agent_runtime_provisioning.py +112 -0
- clousight_bench-0.2.0/tests/test_agent_runtime_reliability.py +94 -0
- clousight_bench-0.2.0/tests/test_agent_stub_retry.py +106 -0
- clousight_bench-0.2.0/tests/test_agent_vendor_cache.py +54 -0
- clousight_bench-0.2.0/tests/test_aliyun_campaign_default_carrier.py +121 -0
- clousight_bench-0.2.0/tests/test_aliyun_campaign_hook.py +39 -0
- clousight_bench-0.2.0/tests/test_aliyun_provider.py +83 -0
- clousight_bench-0.2.0/tests/test_aliyun_remote_probe_client.py +121 -0
- clousight_bench-0.2.0/tests/test_aliyun_run_data_plane_probe.py +76 -0
- clousight_bench-0.2.0/tests/test_analytics_export.py +27 -0
- clousight_bench-0.2.0/tests/test_analytics_flatten.py +143 -0
- clousight_bench-0.2.0/tests/test_analytics_iter.py +44 -0
- clousight_bench-0.2.0/tests/test_analytics_query.py +28 -0
- clousight_bench-0.2.0/tests/test_artifact.py +153 -0
- clousight_bench-0.2.0/tests/test_assets.py +135 -0
- clousight_bench-0.2.0/tests/test_assets_sandbox.py +31 -0
- clousight_bench-0.2.0/tests/test_aws_campaign_probe.py +224 -0
- clousight_bench-0.2.0/tests/test_aws_reaper.py +198 -0
- clousight_bench-0.2.0/tests/test_aws_transport.py +568 -0
- clousight_bench-0.2.0/tests/test_bigdata_workload.py +36 -0
- clousight_bench-0.2.0/tests/test_billing.py +52 -0
- clousight_bench-0.2.0/tests/test_brand_assets.py +9 -0
- clousight_bench-0.2.0/tests/test_campaign.py +107 -0
- clousight_bench-0.2.0/tests/test_campaign_carrier_lifecycle.py +281 -0
- clousight_bench-0.2.0/tests/test_campaign_channel.py +87 -0
- clousight_bench-0.2.0/tests/test_campaign_progress_fields.py +88 -0
- clousight_bench-0.2.0/tests/test_campaign_spec.py +49 -0
- clousight_bench-0.2.0/tests/test_canonical.py +46 -0
- clousight_bench-0.2.0/tests/test_cli_conformance.py +19 -0
- clousight_bench-0.2.0/tests/test_cli_dump_bundle.py +15 -0
- clousight_bench-0.2.0/tests/test_cli_failures.py +166 -0
- clousight_bench-0.2.0/tests/test_cli_init_doctor.py +67 -0
- clousight_bench-0.2.0/tests/test_cli_progress.py +75 -0
- clousight_bench-0.2.0/tests/test_cli_query.py +35 -0
- clousight_bench-0.2.0/tests/test_cli_report_html.py +39 -0
- clousight_bench-0.2.0/tests/test_cli_runplan.py +78 -0
- clousight_bench-0.2.0/tests/test_cli_surface.py +227 -0
- clousight_bench-0.2.0/tests/test_client_policy.py +67 -0
- clousight_bench-0.2.0/tests/test_cloud_scrub.py +55 -0
- clousight_bench-0.2.0/tests/test_cn_cloud_permissions.py +39 -0
- clousight_bench-0.2.0/tests/test_conformance.py +65 -0
- clousight_bench-0.2.0/tests/test_controller.py +71 -0
- clousight_bench-0.2.0/tests/test_controller_main.py +105 -0
- clousight_bench-0.2.0/tests/test_controller_reaper.py +50 -0
- clousight_bench-0.2.0/tests/test_controller_user_data.py +28 -0
- clousight_bench-0.2.0/tests/test_cost_budget.py +71 -0
- clousight_bench-0.2.0/tests/test_cost_notice.py +29 -0
- clousight_bench-0.2.0/tests/test_credentials.py +102 -0
- clousight_bench-0.2.0/tests/test_dataplane_dispatch.py +221 -0
- clousight_bench-0.2.0/tests/test_dataplane_invoke.py +76 -0
- clousight_bench-0.2.0/tests/test_dataplane_state_tools.py +40 -0
- clousight_bench-0.2.0/tests/test_dev_wheel.py +149 -0
- clousight_bench-0.2.0/tests/test_doc_references.py +21 -0
- clousight_bench-0.2.0/tests/test_docs_inventory.py +57 -0
- clousight_bench-0.2.0/tests/test_ec2_carrier.py +517 -0
- clousight_bench-0.2.0/tests/test_ecs_carrier.py +465 -0
- clousight_bench-0.2.0/tests/test_enricher.py +37 -0
- clousight_bench-0.2.0/tests/test_example_asset_manifests.py +42 -0
- clousight_bench-0.2.0/tests/test_execution_e2e.py +7 -0
- clousight_bench-0.2.0/tests/test_execution_field.py +35 -0
- clousight_bench-0.2.0/tests/test_execution_mode.py +16 -0
- clousight_bench-0.2.0/tests/test_extension_isolation.py +622 -0
- clousight_bench-0.2.0/tests/test_fingerprints.py +206 -0
- clousight_bench-0.2.0/tests/test_gitsync_identity.py +112 -0
- clousight_bench-0.2.0/tests/test_gsm8k_e2e.py +43 -0
- clousight_bench-0.2.0/tests/test_interrupt.py +61 -0
- clousight_bench-0.2.0/tests/test_lifecycle.py +211 -0
- clousight_bench-0.2.0/tests/test_lifecycle_failures.py +574 -0
- clousight_bench-0.2.0/tests/test_live_guard.py +78 -0
- clousight_bench-0.2.0/tests/test_manifest_schema.py +23 -0
- clousight_bench-0.2.0/tests/test_migrate.py +299 -0
- clousight_bench-0.2.0/tests/test_mock_tools_auth.py +66 -0
- clousight_bench-0.2.0/tests/test_mock_tools_correlation.py +54 -0
- clousight_bench-0.2.0/tests/test_mock_tools_fc_in_sync.py +17 -0
- clousight_bench-0.2.0/tests/test_mode_wiring.py +20 -0
- clousight_bench-0.2.0/tests/test_observation.py +116 -0
- clousight_bench-0.2.0/tests/test_orchestrator_series_bridge.py +59 -0
- clousight_bench-0.2.0/tests/test_oss_dispatch_client.py +241 -0
- clousight_bench-0.2.0/tests/test_packaged_resources.py +28 -0
- clousight_bench-0.2.0/tests/test_persist_schema_gate.py +65 -0
- clousight_bench-0.2.0/tests/test_persistence.py +101 -0
- clousight_bench-0.2.0/tests/test_plugin_registry.py +144 -0
- clousight_bench-0.2.0/tests/test_preflight.py +192 -0
- clousight_bench-0.2.0/tests/test_pricing_enricher.py +164 -0
- clousight_bench-0.2.0/tests/test_probe_agent_loop.py +389 -0
- clousight_bench-0.2.0/tests/test_probe_auth.py +65 -0
- clousight_bench-0.2.0/tests/test_probe_cancellation.py +105 -0
- clousight_bench-0.2.0/tests/test_probe_client_e2e.py +70 -0
- clousight_bench-0.2.0/tests/test_probe_control_plane_auth.py +135 -0
- clousight_bench-0.2.0/tests/test_probe_dataplane_ttft.py +154 -0
- clousight_bench-0.2.0/tests/test_probe_fault_and_storm.py +282 -0
- clousight_bench-0.2.0/tests/test_probe_hol.py +198 -0
- clousight_bench-0.2.0/tests/test_probe_idle_timeout_honor.py +105 -0
- clousight_bench-0.2.0/tests/test_probe_invoke.py +97 -0
- clousight_bench-0.2.0/tests/test_probe_jobs.py +56 -0
- clousight_bench-0.2.0/tests/test_probe_load_soak.py +108 -0
- clousight_bench-0.2.0/tests/test_probe_oss_artifacts.py +21 -0
- clousight_bench-0.2.0/tests/test_probe_oss_channel.py +322 -0
- clousight_bench-0.2.0/tests/test_probe_oss_client.py +96 -0
- clousight_bench-0.2.0/tests/test_probe_oss_sink.py +95 -0
- clousight_bench-0.2.0/tests/test_probe_oss_sync.py +69 -0
- clousight_bench-0.2.0/tests/test_probe_rate_and_ceiling.py +123 -0
- clousight_bench-0.2.0/tests/test_probe_registry.py +9 -0
- clousight_bench-0.2.0/tests/test_probe_runner.py +54 -0
- clousight_bench-0.2.0/tests/test_probe_scaling.py +99 -0
- clousight_bench-0.2.0/tests/test_probe_server.py +77 -0
- clousight_bench-0.2.0/tests/test_probe_sink_wired.py +93 -0
- clousight_bench-0.2.0/tests/test_probe_ssrf_guard.py +44 -0
- clousight_bench-0.2.0/tests/test_probe_startup_curve.py +111 -0
- clousight_bench-0.2.0/tests/test_probe_warm_retention.py +143 -0
- clousight_bench-0.2.0/tests/test_prod_e2e_inmemory.py +74 -0
- clousight_bench-0.2.0/tests/test_prod_readback.py +51 -0
- clousight_bench-0.2.0/tests/test_prod_submit.py +78 -0
- clousight_bench-0.2.0/tests/test_protocol.py +35 -0
- clousight_bench-0.2.0/tests/test_reaper.py +111 -0
- clousight_bench-0.2.0/tests/test_reaper_live_seams.py +85 -0
- clousight_bench-0.2.0/tests/test_reaper_safety_window.py +45 -0
- clousight_bench-0.2.0/tests/test_record.py +167 -0
- clousight_bench-0.2.0/tests/test_redaction.py +105 -0
- clousight_bench-0.2.0/tests/test_registry_conflicts.py +64 -0
- clousight_bench-0.2.0/tests/test_registry_versioning.py +49 -0
- clousight_bench-0.2.0/tests/test_reliability_fault_recovery.py +470 -0
- clousight_bench-0.2.0/tests/test_reliability_hol.py +386 -0
- clousight_bench-0.2.0/tests/test_reliability_retry_storm.py +432 -0
- clousight_bench-0.2.0/tests/test_report.py +136 -0
- clousight_bench-0.2.0/tests/test_report_aggregates.py +233 -0
- clousight_bench-0.2.0/tests/test_report_brand.py +16 -0
- clousight_bench-0.2.0/tests/test_report_bundle.py +109 -0
- clousight_bench-0.2.0/tests/test_report_echarts.py +62 -0
- clousight_bench-0.2.0/tests/test_report_html.py +72 -0
- clousight_bench-0.2.0/tests/test_report_i18n.py +21 -0
- clousight_bench-0.2.0/tests/test_report_profiles.py +112 -0
- clousight_bench-0.2.0/tests/test_report_robustness.py +246 -0
- clousight_bench-0.2.0/tests/test_report_stats.py +126 -0
- clousight_bench-0.2.0/tests/test_report_svg.py +39 -0
- clousight_bench-0.2.0/tests/test_resource_ledger.py +73 -0
- clousight_bench-0.2.0/tests/test_resource_sweep.py +89 -0
- clousight_bench-0.2.0/tests/test_resume.py +52 -0
- clousight_bench-0.2.0/tests/test_rollup.py +70 -0
- clousight_bench-0.2.0/tests/test_run_id_propagation.py +29 -0
- clousight_bench-0.2.0/tests/test_runplan.py +141 -0
- clousight_bench-0.2.0/tests/test_s3_client.py +292 -0
- clousight_bench-0.2.0/tests/test_sampling.py +22 -0
- clousight_bench-0.2.0/tests/test_sandbox.py +57 -0
- clousight_bench-0.2.0/tests/test_sandbox_limits.py +41 -0
- clousight_bench-0.2.0/tests/test_schema.py +29 -0
- clousight_bench-0.2.0/tests/test_schema_validate.py +54 -0
- clousight_bench-0.2.0/tests/test_stage_timings.py +36 -0
- clousight_bench-0.2.0/tests/test_statistics.py +116 -0
- clousight_bench-0.2.0/tests/test_store.py +180 -0
- clousight_bench-0.2.0/tests/test_store_failures.py +406 -0
- clousight_bench-0.2.0/tests/test_t1_13_startup_curve.py +74 -0
- clousight_bench-0.2.0/tests/test_t1_14_idle_timeout_honor.py +92 -0
- clousight_bench-0.2.0/tests/test_t5_1_usage_only.py +23 -0
- clousight_bench-0.2.0/tests/test_task_contract.py +109 -0
- clousight_bench-0.2.0/tests/test_task_contract_agent_runtime.py +258 -0
- clousight_bench-0.2.0/tests/test_task_contract_bigdata.py +63 -0
- clousight_bench-0.2.0/tests/test_teardown_reconcile.py +92 -0
- clousight_bench-0.2.0/tests/test_terraform_controller.py +29 -0
- clousight_bench-0.2.0/tests/test_timeout.py +48 -0
- clousight_bench-0.2.0/tests/test_trace_cli.py +52 -0
- clousight_bench-0.2.0/tests/test_tracing.py +93 -0
- clousight_bench-0.2.0/tests/test_usage.py +29 -0
- clousight_bench-0.2.0/tests/test_validation.py +105 -0
- clousight_bench-0.2.0/tests/test_verify_cmd.py +107 -0
- clousight_bench-0.2.0/tests/test_versioning.py +41 -0
- clousight_bench-0.2.0/tests/test_watchdog.py +45 -0
- clousight_bench-0.2.0/tests/test_workload_assets.py +67 -0
- clousight_bench-0.2.0/tests/test_workload_limits_integration.py +43 -0
- clousight_bench-0.2.0/tests/test_workload_protocol.py +49 -0
- clousight_bench-0.2.0/tests/test_workload_sandbox.py +51 -0
- clousight_bench-0.2.0/uv.lock +1526 -0
- clousight_bench-0.2.0/workloads/README.md +54 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Exclude large/irrelevant paths from the Docker build context.
|
|
2
|
+
# The cb-probe image needs: pyproject.toml, README.md, src/
|
|
3
|
+
# Everything else can be excluded to keep the context small.
|
|
4
|
+
|
|
5
|
+
.git
|
|
6
|
+
.venv
|
|
7
|
+
venv
|
|
8
|
+
__pycache__
|
|
9
|
+
*.pyc
|
|
10
|
+
*.pyo
|
|
11
|
+
.pytest_cache
|
|
12
|
+
.mypy_cache
|
|
13
|
+
.ruff_cache
|
|
14
|
+
.coverage
|
|
15
|
+
htmlcov/
|
|
16
|
+
|
|
17
|
+
# Benchmark results and run artifacts
|
|
18
|
+
results/
|
|
19
|
+
_vendor_cache/
|
|
20
|
+
|
|
21
|
+
# Tests (not needed for pip install)
|
|
22
|
+
tests/
|
|
23
|
+
|
|
24
|
+
# Superpowers / dev tooling
|
|
25
|
+
.superpowers/
|
|
26
|
+
|
|
27
|
+
# Deploy infra (not needed inside the image)
|
|
28
|
+
deploy/
|
|
29
|
+
|
|
30
|
+
# Docs
|
|
31
|
+
docs/
|
|
32
|
+
site/
|
|
33
|
+
|
|
34
|
+
# IDE / OS
|
|
35
|
+
.idea/
|
|
36
|
+
.vscode/
|
|
37
|
+
*.DS_Store
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Code owners for Clousight Bench.
|
|
2
|
+
# These owners are requested for review on every pull request that touches
|
|
3
|
+
# matching paths. See https://docs.github.com/articles/about-code-owners
|
|
4
|
+
|
|
5
|
+
# Default owner for everything in the repo.
|
|
6
|
+
* @clousight-dev
|
|
7
|
+
|
|
8
|
+
# Result schema, plugin API and lifecycle are the load-bearing contracts —
|
|
9
|
+
# changes here ripple into every plugin and into clousight-bench-pro.
|
|
10
|
+
/src/clousight_bench/core/schema.py @clousight-dev
|
|
11
|
+
/src/clousight_bench/core/plugin.py @clousight-dev
|
|
12
|
+
/src/clousight_bench/core/orchestrator.py @clousight-dev
|
|
13
|
+
|
|
14
|
+
# Packaging, CI and community health.
|
|
15
|
+
/pyproject.toml @clousight-dev
|
|
16
|
+
/.github/ @clousight-dev
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
name: Bug report
|
|
2
|
+
description: Report something that is broken or produces a wrong / non-reproducible result.
|
|
3
|
+
labels: ["bug"]
|
|
4
|
+
body:
|
|
5
|
+
- type: markdown
|
|
6
|
+
attributes:
|
|
7
|
+
value: |
|
|
8
|
+
Thanks for the report. For **security** issues, do not use this form —
|
|
9
|
+
see [SECURITY.md](https://github.com/clousight/clousight-bench/blob/main/SECURITY.md).
|
|
10
|
+
- type: textarea
|
|
11
|
+
id: what-happened
|
|
12
|
+
attributes:
|
|
13
|
+
label: What happened?
|
|
14
|
+
description: What did you expect, and what happened instead?
|
|
15
|
+
validations:
|
|
16
|
+
required: true
|
|
17
|
+
- type: textarea
|
|
18
|
+
id: repro
|
|
19
|
+
attributes:
|
|
20
|
+
label: Steps to reproduce
|
|
21
|
+
description: The exact `csbench` command(s) and any config. Redact secrets.
|
|
22
|
+
placeholder: |
|
|
23
|
+
csbench run --domain agent-runtime --task T1.3 --platform local-sim
|
|
24
|
+
render: shell
|
|
25
|
+
validations:
|
|
26
|
+
required: true
|
|
27
|
+
- type: input
|
|
28
|
+
id: version
|
|
29
|
+
attributes:
|
|
30
|
+
label: Version
|
|
31
|
+
description: Output of `csbench --version` (or the installed `clousight-bench` version).
|
|
32
|
+
validations:
|
|
33
|
+
required: true
|
|
34
|
+
- type: input
|
|
35
|
+
id: python
|
|
36
|
+
attributes:
|
|
37
|
+
label: Python version
|
|
38
|
+
placeholder: "3.12"
|
|
39
|
+
validations:
|
|
40
|
+
required: true
|
|
41
|
+
- type: input
|
|
42
|
+
id: platform-adapter
|
|
43
|
+
attributes:
|
|
44
|
+
label: Adapter / platform
|
|
45
|
+
description: e.g. local-sim, local-process, aliyun-agentrun (mock)
|
|
46
|
+
- type: textarea
|
|
47
|
+
id: result-record
|
|
48
|
+
attributes:
|
|
49
|
+
label: Result record / logs
|
|
50
|
+
description: >
|
|
51
|
+
If a run produced a wrong number, paste the relevant `ResultRecord`
|
|
52
|
+
JSON — especially `config_hash`, `runner_version`, `evidence_layer`.
|
|
53
|
+
Redact any secrets.
|
|
54
|
+
render: json
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
blank_issues_enabled: false
|
|
2
|
+
contact_links:
|
|
3
|
+
- name: Security vulnerability
|
|
4
|
+
url: https://github.com/clousight/clousight-bench/security/advisories/new
|
|
5
|
+
about: Do NOT open a public issue for security problems. Report privately via GitHub Security Advisories.
|
|
6
|
+
- name: Question / discussion
|
|
7
|
+
url: https://github.com/clousight/clousight-bench/discussions
|
|
8
|
+
about: Ask usage questions or discuss ideas here rather than opening an issue.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
name: Feature request
|
|
2
|
+
description: Propose a new platform, dimension, domain pack, or capability.
|
|
3
|
+
labels: ["enhancement"]
|
|
4
|
+
body:
|
|
5
|
+
- type: dropdown
|
|
6
|
+
id: kind
|
|
7
|
+
attributes:
|
|
8
|
+
label: What kind of addition is this?
|
|
9
|
+
options:
|
|
10
|
+
- New platform (ProviderAdapter)
|
|
11
|
+
- New dimension (Task)
|
|
12
|
+
- New domain pack
|
|
13
|
+
- New workload / load generator
|
|
14
|
+
- Core capability
|
|
15
|
+
- Other
|
|
16
|
+
validations:
|
|
17
|
+
required: true
|
|
18
|
+
- type: textarea
|
|
19
|
+
id: problem
|
|
20
|
+
attributes:
|
|
21
|
+
label: What problem does it solve?
|
|
22
|
+
description: What can't you measure or reproduce today?
|
|
23
|
+
validations:
|
|
24
|
+
required: true
|
|
25
|
+
- type: textarea
|
|
26
|
+
id: proposal
|
|
27
|
+
attributes:
|
|
28
|
+
label: Proposed approach
|
|
29
|
+
description: >
|
|
30
|
+
If it is a dimension, what does it measure and what evidence layer
|
|
31
|
+
(A/B/C/D) would it carry? If a platform, which cloud/service and what is
|
|
32
|
+
its own runtime behavior you want surfaced?
|
|
33
|
+
- type: checkboxes
|
|
34
|
+
id: principles
|
|
35
|
+
attributes:
|
|
36
|
+
label: Fits the project principles
|
|
37
|
+
options:
|
|
38
|
+
- label: Reports per-dimension (no blended score) and carries an evidence layer
|
|
39
|
+
- label: Does not require secrets in configs/results
|
|
40
|
+
- label: I'm willing to help implement / test it
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<!-- Thanks for contributing to Clousight Bench! -->
|
|
2
|
+
|
|
3
|
+
## What & why
|
|
4
|
+
|
|
5
|
+
<!-- What does this change do, and why? Link any related issue: Closes #123 -->
|
|
6
|
+
|
|
7
|
+
## Type of change
|
|
8
|
+
|
|
9
|
+
- [ ] Bug fix
|
|
10
|
+
- [ ] New platform (one `ProviderAdapter` + one `configs/*.example.yaml`)
|
|
11
|
+
- [ ] New dimension (one `Task` with `config()`, scoring, declared `evidence_layer`)
|
|
12
|
+
- [ ] New domain pack / workload
|
|
13
|
+
- [ ] Docs / packaging / CI
|
|
14
|
+
- [ ] Other:
|
|
15
|
+
|
|
16
|
+
## Checklist
|
|
17
|
+
|
|
18
|
+
- [ ] Commits are signed off (`git commit -s`) per the [DCO](https://developercertificate.org/)
|
|
19
|
+
- [ ] `ruff check src tests` passes
|
|
20
|
+
- [ ] `mypy src` passes
|
|
21
|
+
- [ ] `pytest -q` passes
|
|
22
|
+
- [ ] Ran the local no-cloud smoke (`csbench run --domain agent-runtime --task T1.3 --platform local-sim`)
|
|
23
|
+
- [ ] If packaging changed: built the wheel and ran the smoke **outside** the checkout
|
|
24
|
+
- [ ] New adapters declare a status (`reference` / `experimental` / `wired` / `skeleton`); no skeleton is presented as runnable
|
|
25
|
+
- [ ] Every result still carries `config_hash` + `runner_version` + `evidence_layer`; no blended scores; no secrets in configs/results
|
|
26
|
+
- [ ] Changing task/scoring for a **shipped** dimension: bumped the version and added a `CHANGELOG.md` entry
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
# Python dependencies declared in pyproject.toml.
|
|
4
|
+
- package-ecosystem: "pip"
|
|
5
|
+
directory: "/"
|
|
6
|
+
schedule:
|
|
7
|
+
interval: "weekly"
|
|
8
|
+
groups:
|
|
9
|
+
python-deps:
|
|
10
|
+
patterns: ["*"]
|
|
11
|
+
labels: ["dependencies"]
|
|
12
|
+
commit-message:
|
|
13
|
+
prefix: "deps"
|
|
14
|
+
|
|
15
|
+
# GitHub Actions used by the CI / release workflows.
|
|
16
|
+
- package-ecosystem: "github-actions"
|
|
17
|
+
directory: "/"
|
|
18
|
+
schedule:
|
|
19
|
+
interval: "weekly"
|
|
20
|
+
groups:
|
|
21
|
+
actions:
|
|
22
|
+
patterns: ["*"]
|
|
23
|
+
labels: ["dependencies", "ci"]
|
|
24
|
+
commit-message:
|
|
25
|
+
prefix: "ci"
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
name: ci
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
# Cancel superseded runs on the same ref (e.g. a new push to an open PR) so we
|
|
9
|
+
# don't burn runners finishing a run whose result no longer matters.
|
|
10
|
+
concurrency:
|
|
11
|
+
group: ci-${{ github.workflow }}-${{ github.ref }}
|
|
12
|
+
cancel-in-progress: true
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
test:
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
strategy:
|
|
18
|
+
# Don't cancel the whole matrix when one cell fails — a single flaky cell
|
|
19
|
+
# shouldn't hide the other versions' results or block the PR by itself.
|
|
20
|
+
# (The 4 cells run in parallel, so this costs no extra wall-clock.)
|
|
21
|
+
fail-fast: false
|
|
22
|
+
matrix:
|
|
23
|
+
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
24
|
+
steps:
|
|
25
|
+
- uses: actions/checkout@v7
|
|
26
|
+
|
|
27
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
28
|
+
uses: actions/setup-python@v7
|
|
29
|
+
with:
|
|
30
|
+
python-version: ${{ matrix.python-version }}
|
|
31
|
+
cache: pip
|
|
32
|
+
cache-dependency-path: pyproject.toml
|
|
33
|
+
|
|
34
|
+
- name: Install
|
|
35
|
+
run: |
|
|
36
|
+
python -m pip install --upgrade pip
|
|
37
|
+
pip install -e ".[dev,store,validate,probe,agent,aliyun]"
|
|
38
|
+
|
|
39
|
+
- name: Lint (ruff)
|
|
40
|
+
run: ruff check src tests
|
|
41
|
+
|
|
42
|
+
- name: Format check (ruff)
|
|
43
|
+
run: ruff format --check src tests
|
|
44
|
+
|
|
45
|
+
- name: Type-check (mypy)
|
|
46
|
+
run: mypy
|
|
47
|
+
|
|
48
|
+
- name: Docs inventory up to date
|
|
49
|
+
run: python scripts/gen_docs.py --check
|
|
50
|
+
|
|
51
|
+
- name: Test (pytest)
|
|
52
|
+
# --durations surfaces the slowest tests in the log so CI-time regressions
|
|
53
|
+
# (e.g. a test doing real network I/O with long timeouts) are easy to spot.
|
|
54
|
+
run: pytest -q --durations=15 --cov --cov-report=term-missing --cov-report=xml
|
|
55
|
+
|
|
56
|
+
- name: Upload coverage to Codecov
|
|
57
|
+
if: matrix.python-version == '3.12'
|
|
58
|
+
continue-on-error: true # coverage upload is best-effort; a Codecov token/outage must never gate merges
|
|
59
|
+
uses: codecov/codecov-action@v7
|
|
60
|
+
with:
|
|
61
|
+
files: coverage.xml
|
|
62
|
+
fail_ci_if_error: false
|
|
63
|
+
|
|
64
|
+
- name: Conformance smoke (built-in domains)
|
|
65
|
+
run: |
|
|
66
|
+
csbench conformance --domain agent-runtime --platform local-sim
|
|
67
|
+
csbench conformance --domain bigdata-emr --platform local-process
|
|
68
|
+
|
|
69
|
+
- name: Local baseline smoke (no cloud account)
|
|
70
|
+
run: |
|
|
71
|
+
csbench list --verbose
|
|
72
|
+
for task in T1.1 T1.2 T1.3 T2.1 T4.1 T4.2 T5.1 T5.2; do
|
|
73
|
+
csbench run --domain agent-runtime --task "$task" --platform local-sim
|
|
74
|
+
done
|
|
75
|
+
csbench run --domain agent-runtime --task T1.3 --platform local-sim \
|
|
76
|
+
--config configs/local-sim.fail-fast.yaml
|
|
77
|
+
csbench run --domain bigdata-emr --task J1.1 --platform local-process
|
|
78
|
+
csbench report
|
|
79
|
+
|
|
80
|
+
- name: Assert every emitted record is schema 0.2
|
|
81
|
+
run: |
|
|
82
|
+
python - <<'PY'
|
|
83
|
+
import json, pathlib
|
|
84
|
+
paths = [p for p in pathlib.Path("results").rglob("*.json")
|
|
85
|
+
if p.name not in {"comparison.json", "migration-manifest.json"}]
|
|
86
|
+
assert paths, "the smoke wrote no records"
|
|
87
|
+
for path in paths:
|
|
88
|
+
data = json.loads(path.read_text(encoding="utf-8"))
|
|
89
|
+
assert data["schema_version"] == "0.2", (path, data["schema_version"])
|
|
90
|
+
assert data["status"] in {"completed", "unsupported"}, (path, data["status"])
|
|
91
|
+
assert data["fingerprints"]["record_digest"].startswith("sha256:"), path
|
|
92
|
+
for gone in ("ok", "metrics", "evidence_layer", "config_hash"):
|
|
93
|
+
assert gone not in data, (path, gone)
|
|
94
|
+
print(f"{len(paths)} records verified at schema 0.2")
|
|
95
|
+
PY
|
|
96
|
+
|
|
97
|
+
- name: Migration round-trip from schema 1.0
|
|
98
|
+
run: |
|
|
99
|
+
rm -rf /tmp/legacy /tmp/migrated /tmp/migrated-again
|
|
100
|
+
mkdir -p /tmp/legacy/agent-runtime/local-sim
|
|
101
|
+
cat > /tmp/legacy/agent-runtime/local-sim/T1.3-run-legacy.json <<'JSON'
|
|
102
|
+
{"domain":"agent-runtime","task_id":"T1.3","platform":"local-sim",
|
|
103
|
+
"run_id":"run-legacy","started_at":"2026-01-01T00:00:00Z",
|
|
104
|
+
"finished_at":"2026-01-01T00:00:05Z","config_hash":"sha256:dead",
|
|
105
|
+
"evidence_layer":"C","metrics":{"recovery_mode":"fail-fast"},
|
|
106
|
+
"ok":true,"runner_version":"1.0.0","raw":{},"notes":"legacy",
|
|
107
|
+
"schema_version":"1.0","series":{},"artifacts":[],"error":null}
|
|
108
|
+
JSON
|
|
109
|
+
csbench migrate-results /tmp/legacy --output /tmp/migrated
|
|
110
|
+
csbench migrate-results /tmp/legacy --output /tmp/migrated-again
|
|
111
|
+
diff -r /tmp/migrated /tmp/migrated-again
|
|
112
|
+
csbench report --results /tmp/migrated
|
|
113
|
+
python - <<'PY'
|
|
114
|
+
import json, pathlib
|
|
115
|
+
data = json.loads(pathlib.Path(
|
|
116
|
+
"/tmp/migrated/agent-runtime/local-sim/T1.3-run-legacy.json"
|
|
117
|
+
).read_text(encoding="utf-8"))
|
|
118
|
+
assert data["schema_version"] == "0.2"
|
|
119
|
+
assert data["fingerprints"]["benchmark"] == "unknown"
|
|
120
|
+
assert data["extensions"]["legacy"]["config_hash"] == "sha256:dead"
|
|
121
|
+
print("migration is deterministic and idempotent")
|
|
122
|
+
PY
|
|
123
|
+
|
|
124
|
+
- name: Run plan aggregates repeats and drops warmups
|
|
125
|
+
run: |
|
|
126
|
+
rm -rf /tmp/plan-results
|
|
127
|
+
csbench run --domain agent-runtime --task T1.3 --platform local-sim \
|
|
128
|
+
--results /tmp/plan-results --repeat 3 --warmup 1
|
|
129
|
+
python - <<'PY'
|
|
130
|
+
import json, pathlib
|
|
131
|
+
aggs = list(pathlib.Path("/tmp/plan-results/aggregates").rglob("*.json"))
|
|
132
|
+
assert len(aggs) == 1, aggs
|
|
133
|
+
data = json.loads(aggs[0].read_text(encoding="utf-8"))
|
|
134
|
+
assert data["kind"] == "run_plan_aggregate"
|
|
135
|
+
assert len(data["runs"]["measured"]) == 3, data["runs"]
|
|
136
|
+
assert len(data["runs"]["warmup"]) == 1, data["runs"]
|
|
137
|
+
assert data["measurements"]["observed_attempts"]["n"] == 3
|
|
138
|
+
assert data["digest"].startswith("sha256:")
|
|
139
|
+
# Four run records + one aggregate; warmups are excluded from the stats.
|
|
140
|
+
recs = [p for p in pathlib.Path("/tmp/plan-results").rglob("*.json")
|
|
141
|
+
if "aggregates" not in p.parts]
|
|
142
|
+
assert len(recs) == 4, recs
|
|
143
|
+
print("run plan: 4 records, 3 measured pooled, 1 warmup dropped")
|
|
144
|
+
PY
|
|
145
|
+
|
|
146
|
+
no-validate:
|
|
147
|
+
# Prove the hand-written validation floor still rejects bad input when the
|
|
148
|
+
# optional [validate] extra (jsonschema) is absent, so the fallback can't rot.
|
|
149
|
+
runs-on: ubuntu-latest
|
|
150
|
+
steps:
|
|
151
|
+
- uses: actions/checkout@v7
|
|
152
|
+
- uses: actions/setup-python@v7
|
|
153
|
+
with:
|
|
154
|
+
python-version: "3.12"
|
|
155
|
+
cache: pip
|
|
156
|
+
cache-dependency-path: pyproject.toml
|
|
157
|
+
- name: Install without [validate]
|
|
158
|
+
run: |
|
|
159
|
+
python -m pip install --upgrade pip
|
|
160
|
+
pip install -e ".[dev,store]"
|
|
161
|
+
- name: Assert jsonschema is not installed
|
|
162
|
+
run: |
|
|
163
|
+
python - <<'PY'
|
|
164
|
+
import importlib.util
|
|
165
|
+
assert importlib.util.find_spec("jsonschema") is None, "jsonschema must be absent here"
|
|
166
|
+
print("jsonschema absent: exercising the hand-written fallback")
|
|
167
|
+
PY
|
|
168
|
+
- name: Test (pytest, fallback path)
|
|
169
|
+
run: pytest -q
|
|
170
|
+
|
|
171
|
+
wheel-smoke:
|
|
172
|
+
runs-on: ubuntu-latest
|
|
173
|
+
steps:
|
|
174
|
+
- uses: actions/checkout@v7
|
|
175
|
+
- uses: actions/setup-python@v7
|
|
176
|
+
with:
|
|
177
|
+
python-version: "3.12"
|
|
178
|
+
cache: pip
|
|
179
|
+
cache-dependency-path: pyproject.toml
|
|
180
|
+
- name: Build wheel
|
|
181
|
+
run: |
|
|
182
|
+
python -m pip install --upgrade pip
|
|
183
|
+
python -m pip wheel . --wheel-dir dist --no-deps
|
|
184
|
+
- name: Install wheel into isolated environment
|
|
185
|
+
run: |
|
|
186
|
+
python -m venv /tmp/csbench-wheel
|
|
187
|
+
/tmp/csbench-wheel/bin/pip install dist/*.whl
|
|
188
|
+
- name: Smoke installed wheel outside checkout
|
|
189
|
+
working-directory: /tmp
|
|
190
|
+
run: |
|
|
191
|
+
/tmp/csbench-wheel/bin/python -c "import importlib.metadata as m, importlib.resources as r, clousight_bench as cb; assert cb.__version__ == m.version('clousight-bench'), (cb.__version__, m.version('clousight-bench')); assert cb.RESULT_SCHEMA_VERSION == '0.2', cb.RESULT_SCHEMA_VERSION; root = r.files('clousight_bench.resources.workloads'); reqs = [('wordcount-py', 'run.py'), ('gsm8k-stats', 'run.py'), ('ycsb-wrapper', 'run.sh')]; missing = [n for n, e in reqs if not (root.joinpath(n, 'manifest.yaml').is_file() and root.joinpath(n, e).is_file())]; assert not missing, missing; assert r.files('clousight_bench').joinpath('py.typed').is_file(), 'py.typed marker missing from wheel'; schemas = r.files('clousight_bench.resources').joinpath('schemas'); need = ['runspec.schema.json', 'workload-manifest.schema.json', 'result-record-0.2.schema.json']; smissing = [s for s in need if not schemas.joinpath(s).is_file()]; assert not smissing, smissing; print('wheel version + workloads + py.typed + schemas + schema 0.2 verified')"
|
|
192
|
+
/tmp/csbench-wheel/bin/csbench list --verbose
|
|
193
|
+
/tmp/csbench-wheel/bin/csbench run \
|
|
194
|
+
--domain agent-runtime --task T1.3 --platform local-sim \
|
|
195
|
+
--results /tmp/csbench-wheel-results
|
|
196
|
+
/tmp/csbench-wheel/bin/csbench run \
|
|
197
|
+
--domain bigdata-emr --task J1.1 --platform local-process \
|
|
198
|
+
--results /tmp/csbench-wheel-results
|
|
199
|
+
/tmp/csbench-wheel/bin/csbench report \
|
|
200
|
+
--results /tmp/csbench-wheel-results
|
|
201
|
+
|
|
202
|
+
docs:
|
|
203
|
+
runs-on: ubuntu-latest
|
|
204
|
+
steps:
|
|
205
|
+
- uses: actions/checkout@v7
|
|
206
|
+
- uses: actions/setup-python@v7
|
|
207
|
+
with:
|
|
208
|
+
python-version: "3.12"
|
|
209
|
+
cache: pip
|
|
210
|
+
cache-dependency-path: pyproject.toml
|
|
211
|
+
- name: Install docs dependencies
|
|
212
|
+
run: |
|
|
213
|
+
python -m pip install --upgrade pip
|
|
214
|
+
pip install -e ".[docs]"
|
|
215
|
+
- name: Build docs
|
|
216
|
+
run: mkdocs build --strict
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
name: codeql
|
|
2
|
+
|
|
3
|
+
# Static security analysis (CodeQL) for the Python source. Runs on pushes/PRs to
|
|
4
|
+
# main and on a weekly schedule so newly-published queries catch older code.
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
branches: [main]
|
|
9
|
+
pull_request:
|
|
10
|
+
branches: [main]
|
|
11
|
+
schedule:
|
|
12
|
+
- cron: "27 3 * * 1" # Mondays 03:27 UTC
|
|
13
|
+
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
security-events: write
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
analyze:
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v7
|
|
23
|
+
- name: Initialize CodeQL
|
|
24
|
+
uses: github/codeql-action/init@v3
|
|
25
|
+
with:
|
|
26
|
+
languages: python
|
|
27
|
+
queries: security-and-quality
|
|
28
|
+
- name: Perform CodeQL analysis
|
|
29
|
+
uses: github/codeql-action/analyze@v3
|
|
30
|
+
with:
|
|
31
|
+
category: "/language:python"
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
name: dependency-review
|
|
2
|
+
|
|
3
|
+
# Flag known-vulnerable or license-incompatible dependencies introduced by a PR,
|
|
4
|
+
# before they land on main. Complements Dependabot (which updates existing deps).
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
pull_request:
|
|
8
|
+
branches: [main]
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
contents: read
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
review:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v7
|
|
18
|
+
- name: Dependency review
|
|
19
|
+
uses: actions/dependency-review-action@v4
|
|
20
|
+
with:
|
|
21
|
+
fail-on-severity: high
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
name: docs-deploy
|
|
2
|
+
|
|
3
|
+
# Publish the MkDocs site to GitHub Pages on a version tag (the same trigger as
|
|
4
|
+
# the PyPI release), so the docs a release ships match the published package.
|
|
5
|
+
# CI already builds the docs with --strict on every PR (see ci.yml); this only
|
|
6
|
+
# deploys. One-time setup: repo Settings → Pages → Source = "GitHub Actions".
|
|
7
|
+
|
|
8
|
+
on:
|
|
9
|
+
push:
|
|
10
|
+
tags:
|
|
11
|
+
- "v*"
|
|
12
|
+
workflow_dispatch:
|
|
13
|
+
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
pages: write
|
|
17
|
+
id-token: write
|
|
18
|
+
|
|
19
|
+
# Only one concurrent deploy; don't cancel an in-progress one mid-publish.
|
|
20
|
+
concurrency:
|
|
21
|
+
group: pages
|
|
22
|
+
cancel-in-progress: false
|
|
23
|
+
|
|
24
|
+
jobs:
|
|
25
|
+
build:
|
|
26
|
+
runs-on: ubuntu-latest
|
|
27
|
+
steps:
|
|
28
|
+
- uses: actions/checkout@v7
|
|
29
|
+
- uses: actions/setup-python@v7
|
|
30
|
+
with:
|
|
31
|
+
python-version: "3.12"
|
|
32
|
+
cache: pip
|
|
33
|
+
cache-dependency-path: pyproject.toml
|
|
34
|
+
- name: Install docs dependencies
|
|
35
|
+
run: |
|
|
36
|
+
python -m pip install --upgrade pip
|
|
37
|
+
pip install -e ".[docs]"
|
|
38
|
+
- name: Build docs (strict)
|
|
39
|
+
run: mkdocs build --strict --site-dir _site
|
|
40
|
+
- uses: actions/upload-pages-artifact@v3
|
|
41
|
+
with:
|
|
42
|
+
path: _site
|
|
43
|
+
|
|
44
|
+
deploy:
|
|
45
|
+
needs: build
|
|
46
|
+
runs-on: ubuntu-latest
|
|
47
|
+
environment:
|
|
48
|
+
name: github-pages
|
|
49
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
50
|
+
steps:
|
|
51
|
+
- id: deployment
|
|
52
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
name: release
|
|
2
|
+
|
|
3
|
+
# Publish to PyPI when a version tag is pushed (e.g. v0.2.0).
|
|
4
|
+
# Uses PyPI Trusted Publishing (OIDC) — no API token stored as a secret.
|
|
5
|
+
# One-time setup on PyPI: add this repo + workflow as a trusted publisher for
|
|
6
|
+
# the `clousight-bench` project. See docs/RELEASING.md.
|
|
7
|
+
|
|
8
|
+
on:
|
|
9
|
+
push:
|
|
10
|
+
tags:
|
|
11
|
+
- "v*"
|
|
12
|
+
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
build:
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v7
|
|
21
|
+
- uses: actions/setup-python@v7
|
|
22
|
+
with:
|
|
23
|
+
python-version: "3.12"
|
|
24
|
+
- name: Verify tag matches package version
|
|
25
|
+
run: |
|
|
26
|
+
python -m pip install --upgrade pip
|
|
27
|
+
pip install -e .
|
|
28
|
+
TAG="${GITHUB_REF_NAME#v}"
|
|
29
|
+
PKG="$(python -c 'import importlib.metadata as m; print(m.version("clousight-bench"))')"
|
|
30
|
+
echo "tag=$TAG package=$PKG"
|
|
31
|
+
test "$TAG" = "$PKG" || { echo "::error::tag v$TAG != package version $PKG"; exit 1; }
|
|
32
|
+
- name: Build sdist + wheel
|
|
33
|
+
run: |
|
|
34
|
+
pip install build
|
|
35
|
+
python -m build
|
|
36
|
+
- name: Check metadata
|
|
37
|
+
run: |
|
|
38
|
+
pip install twine
|
|
39
|
+
twine check dist/*
|
|
40
|
+
- uses: actions/upload-artifact@v7
|
|
41
|
+
with:
|
|
42
|
+
name: dist
|
|
43
|
+
path: dist/
|
|
44
|
+
|
|
45
|
+
publish:
|
|
46
|
+
needs: build
|
|
47
|
+
runs-on: ubuntu-latest
|
|
48
|
+
environment: pypi
|
|
49
|
+
permissions:
|
|
50
|
+
id-token: write # required for Trusted Publishing (OIDC)
|
|
51
|
+
steps:
|
|
52
|
+
- uses: actions/download-artifact@v8
|
|
53
|
+
with:
|
|
54
|
+
name: dist
|
|
55
|
+
path: dist/
|
|
56
|
+
- name: Publish to PyPI
|
|
57
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
__pycache__/
|
|
2
|
+
*.py[cod]
|
|
3
|
+
*.egg-info/
|
|
4
|
+
.eggs/
|
|
5
|
+
dist/
|
|
6
|
+
build/
|
|
7
|
+
.venv/
|
|
8
|
+
venv/
|
|
9
|
+
.pytest_cache/
|
|
10
|
+
.ruff_cache/
|
|
11
|
+
.mypy_cache/
|
|
12
|
+
results/
|
|
13
|
+
# Agent-bundle vendored deps (LangChain + OTel) — regenerated at build time, never commit
|
|
14
|
+
_vendor_cache/
|
|
15
|
+
.coverage
|
|
16
|
+
coverage.xml
|
|
17
|
+
htmlcov/
|
|
18
|
+
site/
|
|
19
|
+
*.local.yaml
|
|
20
|
+
.env
|
|
21
|
+
.gitsync.env
|
|
22
|
+
.DS_Store
|
|
23
|
+
.terraform/
|
|
24
|
+
*.tfstate
|
|
25
|
+
*.tfstate.backup
|
|
26
|
+
.worktrees/
|
|
27
|
+
|
|
28
|
+
# Terraform / infra build artifacts
|
|
29
|
+
*.tfvars
|
|
30
|
+
!*.tfvars.example
|
|
31
|
+
mock-tools-fc.zip
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# Template for scripts/gitsync.sh. Copy to `.gitsync.env` (which is gitignored):
|
|
2
|
+
# cp .gitsync.env.example .gitsync.env
|
|
3
|
+
# The script reads $CSBENCH_REPO from the environment, or sources this file's
|
|
4
|
+
# copy, to know which GitHub repo to push/PR against. Auth uses your machine's
|
|
5
|
+
# `gh` config; no token is stored here.
|
|
6
|
+
CSBENCH_REPO=clousight/clousight-bench
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Clousight Bench — Agent 入口
|
|
2
|
+
|
|
3
|
+
本仓库是 Clousight Bench 开源测评核心。开发与贡献约定见 `README.md`。
|
|
4
|
+
|
|
5
|
+
## 仓库身份(强制)
|
|
6
|
+
|
|
7
|
+
- **GitHub 操作账号**:`clousight-dev`。`scripts/gitsync.sh` 会拒绝其它 `gh` 账号,并把本仓 `user.name` / `user.email` 写成 `Clousight` / `306954191+clousight-dev@users.noreply.github.com`(GitHub 按邮箱归属账号;个人 Gmail 会显示成个人 GitHub 用户)。
|
|
8
|
+
- 未走 gitsync 时,向 GitHub 提交、推送、创建 PR、Issue 或 Release 前先用 `gh auth status` 确认;不是该账号时执行 `gh auth switch --user clousight-dev`。
|
|
9
|
+
- 禁止直推 `main`。本地改动推到功能分支,`gitsync pr` 后 `gitsync merge`(默认 squash)。
|
|
10
|
+
- 提交继续遵守仓库 DCO 要求(`git commit -s`)。`gitsync commit` 会自动加 `-s`。
|