Skip to content

feat(kits): publish reusable kits for proven environment infrastructure #190

Description

@Brad-Edwards

Outcome

Authors can assemble realistic emulated environments from reusable, proven infrastructure building blocks instead of repeatedly recreating identity, endpoint, network, application, data, AI, and operational foundations by hand.

A kit is an ordinary, inspectable authoring unit: a RAES SDL module plus the pack-owned assets, documentation, tests, provenance, parameters, and composition metadata needed to add that infrastructure component to an environment pack. Authors can discover a kit, inspect what it adds, select its parameters and namespace, preview the ordinary file changes, add it to a pack, validate the result, update or replace it, and remove it safely.

This issue is complete when the concrete initial kit collection below and the shared authoring workflow both ship. A one-kit pilot, taxonomy alone, or tooling without useful content is not completion.

Author value

Without kits, an author must repeatedly define common infrastructure, copy or recreate supporting assets, choose identifiers and parameters, wire relationships, add validation, and reconstruct documentation.

With kits, an author starts from working, tested environment components and spends time on the purpose of the environment rather than rebuilding its foundations.

Scope boundary

Issue 190 covers static environment composition and authoring.

It does not own backend realization, host readiness, launch, rollback, teardown, runtime evidence generation, or capability negotiation. It does not modify or extend a backend or adapter. Those responsibilities stay with the backend repositories that implement them. Hub issue #3 is a navigation summary whose false APTL/LilRAE split is being corrected by OpenRAE/hub#39; it is not the authority for repository responsibilities.

It also does not package scenario purpose or participant behavior. Initial kits must not introduce:

  • agents or behavior specifications;
  • action contracts;
  • injects, events, stories, or workflows;
  • participant objectives or scenario-specific success conditions;
  • offensive, defensive, resilience, research, or product-testing narratives; or
  • a supported / constrained / unsupported / unknown backend verdict taxonomy.

The initial collection is limited to infrastructure components with demonstrated working implementations and tests. Missing or speculative primitives belong in follow-up issues, not in this delivery.

Authority

  • RAES owns SDL semantics, module descriptors, parameters, exports, namespaces, source-artifact provenance, versions, composition, validation, raes.lock.json, reusable-asset trust policy, and associated-artifact identity and byte binding.
  • env-packs owns kit packaging, pack-local assets and metadata, safe authoring operations, deterministic materialization, diagnostics, removal ownership, and projection of ordinary pack files into the existing RAES contracts.
  • Catalog repositories own released kit content, admission, versioning, support, archival, and the release inputs consumed by distribution tooling.
  • Backends own realization of the resulting ordinary RAES scenario and all runtime evidence.

A kit is not a second SDL, backend profile, runtime plugin, opaque generator, or env-packs-owned dependency lock.

Initial infrastructure kit collection

The following are required deliverables. Implementations may share lower-level assets, but each named kit must remain independently discoverable, inspectable, composable, and removable.

Identity and domain infrastructure

  • Windows Active Directory domain controller — configurable forest/domain identity, directory authority, DNS identity, administrator identity, and exported domain-controller node.
  • Samba Active Directory-compatible domain controller — configurable AD-compatible domain and directory authority on a Linux/Samba implementation.
  • Windows domain member — configurable Windows workstation/server joined to an imported domain authority.
  • Linux domain member — configurable Linux host joined to an imported directory/domain authority.
  • OIDC identity provider — configurable realm/tenant, users, clients, and exported identity facade suitable for application federation.

Access and workstation infrastructure

  • SSH-accessible Linux host — Linux endpoint with declared account and SSH access surface.
  • RDP-accessible Windows host — Windows endpoint with declared account and RDP access surface.
  • Browser workstation — browser-accessible desktop or terminal workstation for environments needing an inspectable interactive endpoint.

These kits declare environment structure and access endpoints only. Credential brokering and participant-session delivery remain backend responsibilities.

Network and shared services

  • Authoritative DNS service — configurable zone, records, and exported DNS service relationships.
  • SMB file service — configurable shares, directory-backed or local identities, seeded content, and access relationships.
  • SMTP/IMAP mail service — configurable domains, accounts, mailboxes, and seeded messages.
  • Webmail service — browser mail client joined to an imported mail service and optional identity provider.
  • Static web service — configurable HTTP content service with seeded files and optional TLS identity.
  • Application/API service — configurable application endpoint with data/content dependencies and health surface.
  • Reverse proxy/API gateway — configurable routed front door for one or more imported application services.

Collaboration and developer services

  • Git forge — configurable repositories, users, teams, and seeded project content.
  • Issue tracker — configurable projects, users, tickets, and seeded work items.
  • Lab portal — configurable landing portal joining selected services into one environment-facing index.

Data and workflow services

  • PostgreSQL database — configurable database, roles, schemas, and seeded data.
  • S3-compatible object store — configurable buckets, identities, policies, and seeded artifacts.
  • Search/index service — configurable indexes, mappings, and seeded documents.
  • Notebook environment — configurable notebook server, kernels, data mounts, and imported service relationships.
  • Workflow orchestrator — configurable workflows/jobs, service identities, schedules, and imported data/artifact dependencies.

AI and model-development services

  • Model registry — configurable models, versions, artifacts, and metadata.
  • Text-model serving — configurable local/open model endpoint and model artifact dependency.
  • Image-inference service — configurable image model endpoint and artifact/schema dependencies.
  • Inference API gateway — configurable front door and policy/routing relationships for imported model services.
  • Python package resolver — configurable package index/resolution service and seeded package metadata.
  • Isolated Python analysis sandbox — bounded environment for inspecting imported package artifacts.
  • Python evaluation worker — configurable worker that consumes imported package/model artifacts and produces bounded result artifacts.

These are environment services only; no adversarial tasks, agent behavior, evaluation objectives, or experiment claims are included.

Security operations infrastructure

  • Wazuh security monitoring stack — configurable manager, indexer, dashboard, endpoint-enrollment surfaces, and telemetry relationships.
  • Suricata network intrusion-detection sensor — configurable capture and rule inputs plus declared event-output relationships.
  • TheHive case-management service — configurable organizations, users, case types, storage, and imported observability relationships.
  • Shuffle automation service — configurable platform services, application-integration endpoints, and storage dependencies without scenario-specific response playbooks.

These kits provide the reusable platforms and their static configuration surfaces. They do not include scenario incidents, detections tied to a narrative, response injects, participant behavior, or claims that a backend attached a sensor to live traffic.

Policy and operational services

  • Policy engine — configurable policy bundles, decision endpoint, and relationships to imported services.
  • Telemetry collector — configurable collection endpoints, routes, and storage/export relationships.
  • Observability/evidence store — configurable storage surface for logs, traces, metrics, and other declared artifacts without assigning scenario meaning to them.
  • Load/rehearsal runner — configurable workload runner and target relationships; the kit provides infrastructure and invocation assets, not proof that a backend executed a rehearsal.

Kit contract

Define a closed, versioned, pack-owned kit manifest or projection that references rather than restates RAES-owned module facts.

For every kit, inspection must expose:

  • kit identity and version;
  • author value and intended infrastructure concern;
  • RAES module identity;
  • parameters and defaults obtained from RAES;
  • exported nodes, services, identities, content, and relationships obtained from RAES;
  • topology additions and required imports;
  • pack-local assets and their visibility;
  • resource/cost expectations as pack-domain estimates;
  • prerequisites and kit-to-kit dependencies;
  • limitations;
  • provenance and redistribution terms;
  • validation and composition tests; and
  • files owned by the materialized kit for conflict-aware update and removal.

raes.lock.json remains the module dependency lock. Do not introduce a competing kit dependency lock or duplicate RAES module descriptors in the kit schema.

Versioning, identity, and supply-chain inputs

Kits and completed packs must consume the existing RAES trust and integrity mechanisms instead of defining parallel pack semantics:

  • each kit has a stable identity and release version, and materialization records that exact kit version as inert authoring provenance for inspection, update, replacement, and removal;
  • every RAES module selected through a kit is resolved and digest-pinned through raes.lock.json, including the incumbent signature and drift checks;
  • every completed pack retains a valid associated-artifact-manifest/v1 whose validator-derived set digest binds the exact pack inventory to its semantic scenario parent;
  • shipped or content-addressably pinned components use existing RAES source/artifact identity, version, digest, provenance, and image-attestation fields where those facts belong; the kit manifest must not duplicate them;
  • pack-owned provenance continues to record origin, licensing, redistribution, and publication facts for non-RAES material; and
  • kit metadata provides deterministic, machine-readable component and artifact inputs sufficient for the distribution workflow to produce a release SBOM without rescanning opaque author intent.

The component-inventory boundary is author-declared but not arbitrary: it must include every executable, container image, package, model, and other software artifact that the kit ships or immutably pins, at the finest authoritative granularity available. External or runtime-selected dependencies must be marked as outside the pack boundary or unresolved rather than guessed. Valid upstream CycloneDX/SPDX documents may be preserved and referenced; they must not be flattened into a falsely complete dependency closure.

Issue #191 owns per-pack SBOM generation, release signatures/attestations, publication, and consumer verification. Issue 190 does not create an SBOM schema, cryptographic format, trust evidence class, pack digest, or signing service. An SBOM is component inventory, not proof of safety, authenticity, or backend realization.

Authoring workflow

Provide one shared library contract and CLI surface that can:

  • list and search the kit collection;
  • inspect a kit in human-readable and stable machine-readable form;
  • select a namespace and bounded parameter values;
  • preview topology additions, dependencies, assumptions, files, and lock changes without writing;
  • detect namespace, exported-symbol, version, dependency, path, and visibility conflicts;
  • atomically add a kit to an existing valid pack;
  • immediately validate the completed pack through env-packs and RAES;
  • update or replace a kit while preserving and reporting author-modified files; and
  • remove a kit using explicit ownership metadata rather than filename or byte guesses.

Interactive, machine-readable, Hub, and future MCP routes must consume these same proposal, composition, diagnostic, and mutation contracts.

Content quality requirements

Every initial kit must:

  • provide a coherent author-visible infrastructure capability rather than a thin wrapper around one import;
  • contain no scenario narrative or dynamic participant behavior;
  • expose bounded, useful parameters and documented exports;
  • include required distributable assets and pack-local integration material;
  • include documentation, provenance, limitations, resource expectations, and tests;
  • validate independently as a module/kit and when composed into a minimal pack;
  • compose deterministically under at least two materially different parameter sets where the component supports variation;
  • participate in at least one multi-kit composition test;
  • support preview, add, validation, update or replacement, and removal; and
  • make no backend realization or runtime-evidence claim.

Demonstration

Publish an author walkthrough that:

  1. starts with a minimal valid pack;
  2. discovers and inspects infrastructure kits;
  3. composes a realistic environment from multiple identity, endpoint, network, application, and data kits;
  4. previews and reviews the ordinary file, raes.lock.json, associated-artifact, and component-inventory changes;
  5. validates the result;
  6. changes one kit parameter;
  7. replaces one implementation choice where the kit interfaces permit it; and
  8. removes one kit cleanly.

The finished pack must remain normal editable source and must validate without the original interactive interface.

Downstream handoff

After the initial kit contracts and stable kit identifiers ship:

  • create an issue in Brad-Edwards/shifter to qualify and implement honest BigRAE realization for each published kit, recording concrete gaps per kit; and
  • create an issue in Brad-Edwards/aptl—the repository being renamed to LilRAE—to consume and qualify the published kits, recording concrete gaps per kit.

Those issues must enumerate the released kit identifiers. They must not be opened with speculative schemas, and their implementation is not part of issue 190.

Acceptance criteria

  • Every kit named in the initial collection is published through the catalog authority.
  • Every kit has a stable release identity/version and records exact materialization provenance without creating runtime kit semantics.
  • The kit contract references RAES module, source-provenance, trust, and artifact-identity facts without redefining them.
  • The initial kits contain environment infrastructure only and no scenario behavior, injects, objectives, or domain-specific narrative.
  • Authors can list, search, inspect, preview, add, validate, update or replace, and remove kits through shared library and CLI contracts.
  • Preview is side-effect free and shows topology, dependencies, files, assumptions, and RAES lock changes.
  • Composition is deterministic, atomic, conflict-aware, and produces ordinary inspectable pack files plus raes.lock.json.
  • Every completed pack has a RAES-validated associated-artifact set covering its exact inventory and semantic parent.
  • Every kit supplies complete, deterministic inventory inputs for all software artifacts it ships or immutably pins, while explicitly identifying external or unresolved scope.
  • Diagnostics identify exact namespace, export, version, dependency, path, visibility, parameter, and author-modification conflicts.
  • Every kit has independent validation plus parameter-variation and multi-kit composition coverage where applicable.
  • The end-to-end walkthrough composes a realistic multi-service environment and demonstrates modification, replacement, and removal.
  • No backend or adapter is modified, launched, probed, or assigned a compatibility verdict by this work.
  • Concrete post-release realization issues are created in the two named downstream repositories with the stable kit inventory.
  • Separate env-packs backlog issues exist for advanced kits and for high-value infrastructure primitives without demonstrated working implementations.

Non-goals

  • Backend implementation, realization envelopes, launch, readiness, teardown, or runtime evidence.
  • Dynamic participant behavior, injects, events, objectives, or scenario-specific content.
  • Domain-specific security, resilience, research, or product-testing scenarios.
  • Speculative infrastructure primitives without a demonstrated working implementation.
  • Deep or unbounded module trees.
  • A GUI-only authority, hosted runtime, marketplace, or automatic conversion of arbitrary content into kits.

Coordination

Supports OpenRAE/hub#5. The environment kits remain ordinary catalog content; Hub may present the workflow, but files and owning contracts remain authoritative.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    cross-repoCoordinates or depends on delivery in another repositoryin-progressAn agent is actively working this issue via /implementuser-facingDirectly changes a user journey or user-visible outcome

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions