Repository navigation
build(cyberbattlesim): qualify and pin the public source and experiment profile #25
Copy link
Copy link
Closed
Labels
in-progressAn agent is actively working this issue via /implementAn agent is actively working this issue via /implement
Milestone
Description
Objective
Establish one immutable, legally usable, runnable CyberBattleSim source and experiment profile for the RAES study.
Scope
- Select and pin the official fixed-topology examples, CyberBattleChain environment with its basic defender, benchmark notebooks/tags, baseline agents, vulnerability model, and goal/SLA termination settings.
- Record repository/release, package, dependency, Python, scenario, agent, evaluator, seed, and configuration identities and digests.
- Verify licenses, redistribution/attribution requirements, external downloads, model weights, and retained-output permissions.
- Reconstruct installation in a clean environment and execute reset, representative action/step, observation, reward/result, and termination behavior.
- Identify undocumented defaults, incompatible dependencies, known defects, and stochastic entry points.
- Choose the exact example scenario and public baseline protocol that downstream issues must implement.
- Isolate adapter dependencies behind the
cyberbattlesimextra while keeping base-only installation/imports independent. The qualified simulator may be installed through its pinned source route when no public index artifact exists. - Do not patch semantics silently. Any compatibility patch is pinned, explained, and tested against the unmodified source behavior.
Qualification semantics
The maintainer-selected simulator and experiment profile are admitted inputs to the RAES study. Qualification does not decide whether CyberBattleSim is allowed to have an adapter. It records the exact source and installation route, what RAES can attest or reproduce, which stochastic controls are bound or unbound, known upstream defects, and the resulting limits on claim strength. Missing index artifacts, incomplete determinism, and source defects are disclosed limitations; they do not by themselves veto adapter implementation or require RAES to make the simulator do something it cannot do.
Acceptance criteria
- One immutable runtime/source profile and one public experiment protocol are selected.
- Clean installation and a source-native smoke run pass through a documented supported route, including a pinned source checkout when no public index artifact exists.
- Exact scenario, agent, evaluator, reset, seed, metric, and termination identities are known.
- License, attribution, redistribution, archive/maintenance, known-defect, and patch decisions are explicit.
- Base-only and unrelated simulator extras remain independent.
- The qualification record grades attainable RAES claims across source identity, configuration/control attestation, run evidence, and outcome reproduction, with every weakened or unsupported claim disclosed without changing the maintainer admission decision.
References
- https://github.com/microsoft/CyberBattleSim
- RAESystem/research#12
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
in-progressAn agent is actively working this issue via /implementAn agent is actively working this issue via /implement
Activity
Brad-Edwards commentedon Jul 29, 2026
🛠️ Picked up by /implement - driver codex, branch
25-qualify-cyberbattlesim-profile, 2026-07-29T17:51:15.440Z.Brad-Edwards commentedon Jul 29, 2026
gc workflow phase recorded:
preflight(issue #25). Posted by the MCP server to enforce ordering between workflow steps (issue #794 MVP-2). Do not edit or delete — used by downstream tools to gate phase prerequisites.Brad-Edwards commentedon Jul 29, 2026
gc workflow phase recorded:
plan(issue #25). Posted by the MCP server to enforce ordering between workflow steps (issue #794 MVP-2). Do not edit or delete — used by downstream tools to gate phase prerequisites.Implementation plan
raes_adapters.cyberbattlesimas a qualification-evidence package, not an adapter or semantic authority. Its resource API will expose two distinct shipped artifacts: a backend-local JSON qualification record and a prose public experiment protocol. Tests will first fail for the absent package/resources, then drive the smallest loader API needed to read them from both source and built distributions.854d6966607fb68645651f55b0f97221bd293e0d(tree4271b137ab2de593be52d7afb0a51bee59045a45), package version0.1.0, the 2024-08-08 benchmark tag/commit, commit-qualified source paths and SHA-256 digests, Python 3.12 clean-build/install evidence, the resolved dependency identities and license metadata, and a bounded reset/step/termination smoke summary. Record external downloads, model weights, patches, notices, redistribution, retained-output, maintenance, and archive decisions explicitly.notebooks/notebook_withdefender.py:CyberBattleChain-v0size 10,CredentialCacheExploiter,ScanAndReimageCompromisedMachines(0.6, 2, 5), 10 episodes × 600-step evaluator cutoff, full ownership / 80% SLA conditions, cumulative reward and episode length/availability measures. Document reset/step arity, termination precedence, the evaluator cutoff's distinction from Gym termination/truncation, and every observed random stream.cyberbattlesimindex distribution; PyPI rejects direct-URL dependencies; the baseline reset path does not bind all Gym/Python/NumPy random streams; and open upstream benchmark/evaluation defects remain material. Therefore do not add an empty, direct-URL, or knowingly uninstallable published extra. Record the exact blockers and the admission conditions; keep base andcyborgdependency resolution unchanged. This is the fail-closed outcome of the requested qualification, not a silent compatibility patch.docs/decisions/.raes_adapters.basechange, native-state capture, or changelog edit will be introduced.Whole-repository design checks
importlib.resources, the single distribution, existing Hatch build, existing noxtests/distributions/docs/verifysessions, and RAES authority boundaries. No new validator family or qualification workflow is added.src/raes_adapters/cyberbattlesim/, package smoke tests, README, MkDocs navigation, wheel/sdist inclusion, identity policy, docs strict build, and the existing per-extra verification graph are all in scope.Brad-Edwards commentedon Jul 29, 2026
gc_codex_review — cycle 1 of 1 (pre-push) on issue #25 (branch
25-qualify-cyberbattlesim-profile)Diff mode: inline — the complete diff was supplied in one prompt
Core review
Verdict:
shipThis is shaped correctly. The change keeps CyberBattleSim qualification evidence inside its backend-local module, leaves
raes_adapters.baseand CybORG semantics untouched, reuses the repository’s single-distribution boundary, and deliberately withholds an unusable optional extra. The qualification record, human-readable protocol, architectural guardrails, resource-loading API, and consistency tests form a coherent evidence seam without inventing local RAES contracts or claiming adapter conformance. A future admissible protocol can be introduced as another immutable backend-local selection without changing shared plumbing.No blocking findings.
Security review
Verdict:
shipThis is shaped correctly: the change adds backend-local, read-only qualification evidence and fixed-name resource loaders without introducing simulator execution, network access, dynamic imports, request handling, authentication boundaries, or user-controlled filesystem paths. The security seam remains the package trust boundary; both resources are bundled artifacts selected by constants, and the change does not expose native simulator state or secrets. The obvious next variation—another immutable qualification or protocol resource—remains possible without weakening that boundary.
No blocking findings.
Brad-Edwards commentedon Jul 29, 2026
gc_codex_review pre-push cycle 1 of 1 complete for issue #25 on branch '25-qualify-cyberbattlesim-profile'. Posted by the MCP server to enforce the pre-push hard-cap-1 contract (issues #796, #804, #906). Do not edit or delete — used by the next
gc_codex_review(uncommitted) invocation to count cycles.Brad-Edwards commentedon Jul 29, 2026
Review decision record — codex cycle 1 (issue #25)
Reviewer: codex
Cycle: 1
Architectural read:
Blocking findings: 0 (clean run)
Brad-Edwards commentedon Jul 29, 2026
gc_test_quality_review cycle 1 of 1 — issue #25
Reviewer: test-quality (claude-sonnet-5 via gc_test_quality_review)
Branch:
25-qualify-cyberbattlesim-profileCycle: 1 / 1
Findings: 0 (clean run)
Brad-Edwards commentedon Jul 29, 2026
gc_test_quality_review cycle 1 of 1 complete for issue #25 on branch '25-qualify-cyberbattlesim-profile'. Posted by the MCP server to enforce the gc_test_quality_review hard-cap-1 contract (issue #884 follow-up, default lowered in #906). Do not edit or delete — used by the next
gc_test_quality_reviewinvocation to count cycles.Brad-Edwards commentedon Jul 29, 2026
Review decision record — test-quality cycle 1 (issue #25)
Reviewer: test-quality
Cycle: 1
Architectural read:
Blocking findings: 0 (clean run)
Brad-Edwards commentedon Jul 29, 2026
Pre-PR base synchronization
refs/remotes/origin/devat7f6767799fc9ea54b0f7538b9d2125eff87b7b99already_current2cdc3de4db529a1a03213d4b6b376a0c5893dcf07ab32083db6de891bef63d5bdfa197ae380ad8e2Brad-Edwards commentedon Jul 29, 2026
Ready for review — issue #25
PR: #54
Plan: #25 (comment)
Outcome
Maintainers can now reproduce the selected official CyberBattleSim source qualification and use an exact public experiment protocol. The adapter fails closed by withholding a public install extra until upstream packaging, seed control, and benchmark defects satisfy the recorded admission conditions.
Qualifies and pins the official CyberBattleSim source and public experiment profile while keeping research admission closed until the documented blockers are resolved.
Files changed
Added:
docs/decisions/cyberbattlesim-qualification-guardrails.mdsrc/raes_adapters/cyberbattlesim/__init__.pysrc/raes_adapters/cyberbattlesim/public-protocol.mdsrc/raes_adapters/cyberbattlesim/qualification.jsontests/test_cyberbattlesim_qualification.pyModified:
README.mddocs/index.mdmkdocs.ymlsrc/raes_adapters/__init__.pyReviews
Traceability reconciliation
Status
Brad-Edwards commentedon Jul 29, 2026
gc workflow phase recorded:
traceability_reconciled(issue #25). Posted by the MCP server to enforce ordering between workflow steps (issue #794 MVP-2). Do not edit or delete — used by downstream tools to gate phase prerequisites.no in-scope requirements; touched-files audit clean.
Brad-Edwards commentedon Jul 29, 2026
Final report — issue #25 complete
PR: #54
Plan: #25 (comment)
Outcome
Maintainers can now reproduce the selected official CyberBattleSim source qualification and use an exact public experiment protocol. The adapter fails closed by withholding a public install extra until upstream packaging, seed control, and benchmark defects satisfy the recorded admission conditions.
Qualifies and pins the official CyberBattleSim source and public experiment profile while keeping research admission closed until the documented blockers are resolved.
Files changed
Added:
docs/decisions/cyberbattlesim-qualification-guardrails.mdsrc/raes_adapters/cyberbattlesim/__init__.pysrc/raes_adapters/cyberbattlesim/public-protocol.mdsrc/raes_adapters/cyberbattlesim/qualification.jsontests/test_cyberbattlesim_qualification.pyModified:
README.mddocs/index.mdmkdocs.ymlsrc/raes_adapters/__init__.pyReviews
Traceability reconciliation
Requirement-free maintenance run: merged-file and issue reverse lookups found no links to reconcile; the orphaned-link audit passed.
Status