Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Changelog

## 0.3.0 - 2026-06-23

- Add the AI Behavior Science OS v0.3 stack: descriptor-only BDE, read-only CRDD subset compilation, and external-only CERC experiment planning.
- Add feedback integration for external execution results with gap updates and experiment reprioritization.
- Add stable dedup/upsert import entry points and metadata extensions for behavior-distribution tracking.
- Update research documentation and regression coverage for the corpus design workflow.

## 0.2.5 - 2026-05-29

- Harden corpus reporting with field-level metadata provenance and missing-field audits.
Expand Down
2 changes: 1 addition & 1 deletion causetrace/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from .hooks.opencode_parser import parse_session as enrich_opencode_session, list_sessions as list_opencode_sessions
from .hooks.codex_parser import parse_session as enrich_codex_session, list_sessions as list_codex_sessions

__version__ = "0.2.5"
__version__ = "0.3.0"
__all__ = [
"ToolEvent", "TraceRecorder", "JSONStore", "TimelineRenderer",
"ReplayEngine", "build_tree", "infer_relations", "build_causal_graph", "cli",
Expand Down
19 changes: 19 additions & 0 deletions causetrace/bde/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
"""Behavior Design Engine interfaces.

BDE is an opt-in scenario design layer. It defines behavior-generation metadata
only; it does not execute agents or modify runtime behavior.
"""

from .behavior_generator import BehaviorGenerator, BehaviorScenario, PromptVariant
from .failure_injection import FailureInjection
from .multi_agent_simulator import MultiAgentSimulation
from .task_distribution import TaskDistribution

__all__ = [
"BehaviorGenerator",
"BehaviorScenario",
"FailureInjection",
"MultiAgentSimulation",
"PromptVariant",
"TaskDistribution",
]
38 changes: 38 additions & 0 deletions causetrace/bde/behavior_generator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
"""Interfaces for controlled behavior scenario generation.

This module is intentionally passive. It creates scenario descriptors that can
be logged as metadata, but it does not execute prompts or call agent runtimes.
"""
from __future__ import annotations

from dataclasses import dataclass, field
from typing import Any, Protocol


@dataclass(frozen=True)
class PromptVariant:
"""A named prompt/task variant in an experiment design."""

variant_id: str
prompt: str
metadata: dict[str, Any] = field(default_factory=dict)


@dataclass(frozen=True)
class BehaviorScenario:
"""Metadata-only description of a generated behavior scenario."""

scenario_id: str
task: str
behavior_distribution_tag: str | None = None
prompt_variants: tuple[PromptVariant, ...] = ()
experiment_id: str | None = None
control_group_id: str | None = None
metadata: dict[str, Any] = field(default_factory=dict)


class BehaviorGenerator(Protocol):
"""Protocol for BDE scenario generators."""

def generate(self) -> list[BehaviorScenario]:
"""Return scenario descriptors without executing them."""
20 changes: 20 additions & 0 deletions causetrace/bde/failure_injection.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
"""Failure-injection scenario descriptors.

The descriptors here define experimental intent only. They must not mutate
runtime execution or agent configuration.
"""
from __future__ import annotations

from dataclasses import dataclass, field
from typing import Any


@dataclass(frozen=True)
class FailureInjection:
"""Metadata-only failure or near-failure design descriptor."""

injection_id: str
failure_mode: str
target_task_type: str | None = None
expected_observable_signal: str | None = None
metadata: dict[str, Any] = field(default_factory=dict)
19 changes: 19 additions & 0 deletions causetrace/bde/multi_agent_simulator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
"""Multi-agent simulation descriptors.

This module does not simulate or launch agents. It only models planned runtime
roles so traces can later be grouped by experimental design.
"""
from __future__ import annotations

from dataclasses import dataclass, field
from typing import Any


@dataclass(frozen=True)
class MultiAgentSimulation:
"""Metadata-only descriptor for a planned multi-agent scenario."""

simulation_id: str
agent_roles: tuple[str, ...]
coordination_pattern: str | None = None
metadata: dict[str, Any] = field(default_factory=dict)
15 changes: 15 additions & 0 deletions causetrace/bde/task_distribution.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
"""Task distribution descriptors for behavior design experiments."""
from __future__ import annotations

from dataclasses import dataclass, field
from typing import Any


@dataclass(frozen=True)
class TaskDistribution:
"""Metadata-only task distribution for a planned experiment."""

distribution_id: str
task_types: tuple[str, ...]
weights: dict[str, float] = field(default_factory=dict)
metadata: dict[str, Any] = field(default_factory=dict)
Loading
Loading