Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
3d361e0
Initial agentic-f3dasm MVP — Level 1 (Strategizer + Implementer)
elvis-aguero May 17, 2026
8ccea34
Scrap v1 modules for v2 rebuild
elvis-aguero May 17, 2026
099572a
agentic-f3dasm v2 — briefing-driven runtime
elvis-aguero May 18, 2026
7ec3642
L2 enhancements: hypothesis log, error reflection, 3-stage reasoning,…
elvis-aguero May 18, 2026
699c17f
Three runtime fixes + new study with verified end-to-end run
elvis-aguero May 18, 2026
2ebd5b0
Add README-agentic.md and the v2 class diagram
elvis-aguero May 18, 2026
ec51768
Remove orphaned langchain-core / langgraph from base deps
elvis-aguero May 18, 2026
74a7a8d
Move seven inlined prompts into agent_prompts.py as constants
elvis-aguero May 18, 2026
9186278
README: switch install/run docs to uv venv + uv run
elvis-aguero May 18, 2026
4e854c8
Add progress logging via stdlib logging
elvis-aguero May 18, 2026
ada8331
Catch SDK exceptions with actionable error messages
elvis-aguero May 18, 2026
e29f9e0
Relocate agentic implementation to its own _src/agentic/ subpackage
elvis-aguero May 18, 2026
1029b81
Ignore studies/<study>/workspace/
elvis-aguero May 18, 2026
5537f95
Rename canonical study file: briefing.md → PROBLEM_STATEMENT.md
elvis-aguero May 18, 2026
24e2327
README-agentic: reflect _src/agentic/ layout + clean authorship
elvis-aguero May 18, 2026
edba5de
Backend bundle — make the LLM backend swappable
elvis-aguero May 18, 2026
d085118
Add design spec: study config.yaml, time budget, and Ollama backend
elvis-aguero May 19, 2026
2c38f33
Add implementation plan: config.yaml, budget enforcement, Ollama backend
elvis-aguero May 19, 2026
9cc58aa
feat(agentic): add StudyConfig dataclass and _load_study_config
elvis-aguero May 19, 2026
135ddee
feat(agentic): wire StudyConfig into AgenticRun and CLI
elvis-aguero May 19, 2026
1ea8a69
feat(agentic): implement _remaining() and pre-delegation budget check
elvis-aguero May 19, 2026
bc9cdad
feat(agentic): inject remaining_time into Task/Report; budget metadat…
elvis-aguero May 19, 2026
5e9c4aa
feat(agentic): add IMPLEMENTER_SYSTEM_PROMPT_OLLAMA
elvis-aguero May 19, 2026
2d90872
feat(agentic): add Ollama backend with bash-tool Implementer
elvis-aguero May 19, 2026
1a99fa6
feat(agentic): export OLLAMA_BACKEND; add config.yaml to all agentic …
elvis-aguero May 19, 2026
15e945a
docs(agentic): update architecture.md to Level 2 — symmetric contract…
elvis-aguero May 19, 2026
d734b4e
feat(agentic): implement Level 2 — Delegation, AnalysisBase, TaskRegi…
elvis-aguero May 19, 2026
64c777f
refactor(agentic): API v2 — Delegation envelope, RunContext, ContextS…
elvis-aguero May 20, 2026
a869da3
feat(agentic): add on_failure corrective to primitives.retry
elvis-aguero May 21, 2026
a6295d3
feat(agentic): debate returns list[Delegation]; uniform contract with…
elvis-aguero May 21, 2026
1c19e3e
feat(agentic): add ctx.parallel to RunContext — delegates through ful…
elvis-aguero May 21, 2026
3325d7f
feat(agentic): add ctx.retry with on_failure to RunContext
elvis-aguero May 21, 2026
54af9bc
feat(agentic): add ctx.debate returning list[Delegation] to RunContext
elvis-aguero May 21, 2026
18d71cf
feat(agentic): add eval_budget to StudyConfig + config.yaml
elvis-aguero May 21, 2026
b0cbf85
feat(agentic): eval_count tracking + soft warning injection into Task
elvis-aguero May 21, 2026
9934033
fix(agentic): clamp eval_count_remaining >= 0; add multi-delegation a…
elvis-aguero May 21, 2026
3b292fd
refactor(agentic): unify retry corrective string; validate eval_budge…
elvis-aguero May 21, 2026
a1eb22c
feat(agentic): Agent base class + Graph(nodes=) — delete AgentRole
elvis-aguero May 21, 2026
180caa0
fix(agentic): frozenset tools; _resolve_roles guard; Graph validation
elvis-aguero May 21, 2026
c4cc8ab
refactor(agentic): AgenticRun wired to Graph.nodes; infer planner/exe…
elvis-aguero May 21, 2026
2fe358e
feat(agentic): Parallel, Debate, Retry as injected LLM tool closures
elvis-aguero May 21, 2026
7bf9bae
chore(agentic): export Agent; remove AgentRole, RunContext, topology …
elvis-aguero May 21, 2026
1745667
feat(agentic): tool vocabulary constants + Backend.session_factory + …
elvis-aguero May 22, 2026
e9027d3
refactor(agentic): unified _ClaudeAgentSession — delete split classes…
elvis-aguero May 22, 2026
c61fc6b
refactor(agentic): unified _OllamaAgentSession — delete split classes…
elvis-aguero May 22, 2026
e6a92f6
refactor(agentic): _instantiate_node unified factory, Ask-entry-only,…
elvis-aguero May 22, 2026
960145d
refactor(agentic): update ollama tests to use _OllamaAgentSession
elvis-aguero May 22, 2026
86122ba
chore(agentic): remove compat shims; migrate tests to session_factory…
elvis-aguero May 22, 2026
1140ad5
updated agentic readme with current API
elvis-aguero May 22, 2026
5c1fc35
docs(agentic): add flow diagram to README-agentic
elvis-aguero May 22, 2026
8592f2f
docs(agentic): remove flow diagram
elvis-aguero May 22, 2026
a8e0b61
fix(agentic): address CRW code review comments
elvis-aguero May 26, 2026
215a7c5
docs(agentic): clarify f3dasm integration boundary in README
elvis-aguero May 27, 2026
ce60fae
docs(agentic): revert diagram, keep f3dasm integration paragraph
elvis-aguero May 27, 2026
64437d6
docs(agentic): restore f3dasm-framed diagram in method overview
elvis-aguero May 27, 2026
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
18 changes: 18 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
[run]
branch = true
source = src
omit =
tests/
**/__init__.py

[report]
exclude_lines =
pragma: no cover
def __repr__
if self.debug
raise AssertionError
raise NotImplementedError
if TYPE_CHECKING:
if 0:
if __name__ == .__main__.:
@(abc\.)?abstractmethod
12 changes: 11 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -139,4 +139,14 @@ notebook/
.DS_Store

# Mkdocs
site/
site/
# Design specs and implementation plans (local only)
docs/specs/
docs/superpowers/

# Agentic-f3dasm runtime output
studies/*/runs/
studies/*/workspace/

# Reference material kept out of agent reach
studies/fragile_becomes_supercompressible/bessa2019.md
5 changes: 5 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
include LICENSE
include README.md
include pyproject.toml
recursive-include src *.py *.pyi
recursive-include docs *.md *.rst *.ipynb
458 changes: 458 additions & 0 deletions README-agentic.md

Large diffs are not rendered by default.

191 changes: 191 additions & 0 deletions docs/agentic/class_diagram.dot
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
/*
* agentic-f3dasm v2 class diagram
*
* Renders with: dot -Tsvg docs/agentic/class_diagram.dot \
* -o docs/agentic/class_diagram.svg
*/
digraph AgenticF3dasmClasses {
graph [
rankdir = LR
fontname = "Helvetica Neue"
fontsize = 12
bgcolor = "white"
pad = 0.5
splines = polyline
nodesep = 0.45
ranksep = 0.7
]
node [
fontname = "Helvetica Neue"
fontsize = 11
shape = record
style = "filled,rounded"
margin = "0.12,0.08"
]
edge [
fontname = "Helvetica Neue"
fontsize = 10
color = "#555555"
fontcolor = "#555555"
]

/* ── Orchestrator (Python plumbing) ─────────────────────── */
AgenticRun [
label = "{AgenticRun\n(f3dasm._src.optimization.agent_runtime) |
- _study_dir : Path\l
- _run_dir : Path\l
- _git_dir : Path\l
- _strategizer : StrategizerSession\l
- _implementer : ImplementerSession\l
- _checkpoint_every : int = 30\l
- _delegation_counter : int\l
- _last_report : Report | None\l
- _done_called : bool\l |
+ execute() : Path\l
- _setup_paths()\l
- _init_git()\l
- _start_sessions()\l
- _run_loop()\l
- _run_checkpoint()\l
- _reset_implementer()\l
- _assemble_deliverable()\l }"
fillcolor = "#E8F4FD"
color = "#1565C0"
]

/* ── Agent abstractions ────────────────────────────────── */
StrategizerSession [
label = "{«Protocol»\nStrategizerSession |
+ send(message : str) : str\l}"
fillcolor = "#FFF9C4"
color = "#F9A825"
]
ImplementerSession [
label = "{«Protocol»\nImplementerSession |
+ send(message : str) : str\l}"
fillcolor = "#FFF9C4"
color = "#F9A825"
]
ClaudeStrategizer [
label = "{_ClaudeStrategizer\n(implements StrategizerSession) |
- _system_prompt : str\l
- _model : str\l
- _tool_closures : dict\l
- _session_id : str | None\l |
+ send(message) : str\l
- _build_options() : ClaudeAgentOptions\l}"
fillcolor = "#FFF3E0"
color = "#E65100"
]
ClaudeImplementer [
label = "{_ClaudeImplementer\n(implements ImplementerSession) |
- _system_prompt : str\l
- _model : str\l
- _study_dir : Path\l
- _session_id : str | None\l |
+ send(message) : str\l
- _build_options() : ClaudeAgentOptions\l}"
fillcolor = "#FFF3E0"
color = "#E65100"
]

/* ── Payloads ──────────────────────────────────────────── */
Task [
label = "{«dataclass»\nTask |
+ intent : str\l
+ expected_report : str\l}"
fillcolor = "#EDE7F6"
color = "#5E35B1"
]
Report [
label = "{«dataclass»\nReport |
+ actions_taken : str\l
+ files_touched : list[str]\l
+ conclusions : str\l
+ numbers : dict\l
+ raw : str\l}"
fillcolor = "#EDE7F6"
color = "#5E35B1"
]

/* ── Tool closures owned by the orchestrator ───────────── */
Tools [
label = "{Strategizer tool closures\n(SdkMcpTool wrappers) |
Read(path) : str\l
WriteMarkdown(path, content) : str\l
Ask(question) : str\l
Delegate(intent, expected_report) : str\l
Done(summary) : str\l}"
fillcolor = "#E8F5E9"
color = "#388E3C"
]

/* ── Utility surfaced for the Implementer ──────────────── */
LookupDataGenerator [
label = "{LookupDataGenerator\n(extends DataGenerator) |
+ pool : ExperimentData\l
+ input_columns : list[str]\l
+ output_columns : list[str] | None\l |
+ execute(sample) : ExperimentSample\l
+ consume_repeats() : int\l
+ reset_seen()\l}"
fillcolor = "#E3F2FD"
color = "#1565C0"
]

/* ── Native f3dasm (pristine; shown for reference) ─────── */
f3dasm_core [
label = "{«native f3dasm — not edited»\nDomain, ExperimentData,\nDataGenerator, Block,\nSampler, Optimizer |
(no changes by the agentic layer)\l}"
style = "dashed,rounded,filled"
fillcolor = "#F5F5F5"
color = "#9E9E9E"
]

/* ── Prompts module ────────────────────────────────────── */
Prompts [
label = "{agent_prompts (module) |
STRATEGIZER_SYSTEM_PROMPT\l
IMPLEMENTER_SYSTEM_PROMPT\l
CHECKPOINT_STRATEGIZER_PROMPT\l
IMPLEMENTER_RESET_PROMPT_TEMPLATE\l}"
fillcolor = "#FFEBEE"
color = "#D32F2F"
]

/* ══════════════════════════════════════════════════════
RELATIONS
══════════════════════════════════════════════════════ */
AgenticRun -> StrategizerSession [arrowhead = open
label = " drives"]
AgenticRun -> ImplementerSession [arrowhead = open
label = " drives"]
AgenticRun -> Tools [arrowhead = open
label = " builds &\n injects"]
AgenticRun -> Prompts [arrowhead = open
label = " loads"]

StrategizerSession -> ClaudeStrategizer [arrowhead = empty
style = dashed
label = " realised by"]
ImplementerSession -> ClaudeImplementer [arrowhead = empty
style = dashed
label = " realised by"]

AgenticRun -> Task [arrowhead = open
label = " creates per\n delegation"]
AgenticRun -> Report [arrowhead = open
label = " parses from\n reply"]

Task -> ClaudeImplementer [style = dashed
label = " serialised\n as user msg"]
ClaudeImplementer -> Report [style = dashed
label = " emits in\n reply text"]

ClaudeImplementer -> LookupDataGenerator [style = dashed
arrowhead = vee
label = " may import\n inside its scripts"]
LookupDataGenerator -> f3dasm_core [style = dashed
arrowhead = empty
label = " subclasses"]
}
Loading