Releases: aeriesec/orgforge
Releases · aeriesec/orgforge
Release list
v1.2.5--arvix-preprint
Added
- Global Voice Card System (
utils/persona_utils.py,src/normal_day.py): Migrated individual persona logic to a centralizedget_voice_cardutility. This provides context-aware character sheets (e.g.,async,design,collision) that inject tenure, expertise, mood, and "anti-patterns" into LLM backstories to prevent generic corporate drift. - Robust JSON Recovery (
requirements.txt,src/flow.py,src/normal_day.py): Integratedjson-repairacross the simulation pipeline. This allows the engine to "salvage" malformed LLM responses in ticket generation and Slack conversations, significantly reducing "failed to parse" fallbacks.
Changed
- Persona History Filtering (
src/memory.py): Enhancedpersona_historyto filter out "noisy" macro-events (like sprint planning summaries or standups). This ensures agents focus on personal agency and direct interactions when building their local context. - Incident Recurrence Logic (
src/causal_chain_handler.py): Refined theRecurrenceDetectorto prioritize the earliest incident in a chain (anti-daisy-chaining). This ensures new incidents link back to the original root cause rather than just the most recent duplicate. - Streamlined codebase (
Across all files): Conducted a major cleanup of legacy comments, "ASCII art" section dividers, and redundant docstrings to improve readability and reduce token overhead during development.
Fixed
- PR Causal Linking (
src/flow.py): Fixed a bug where PR IDs were missing from the persistent ticket record. PRs are now immediately appended to theCausalChainHandlerand saved to MongoDB upon creation. - Department Signal Noise (
src/day_planner.py): Non-engineering departments (Sales, HR) now only receive "direct" relevance signals, preventing them from being overwhelmed by technical incident data that doesn't impact their planning.
v1.1.1-preprint
[v1.1.1] — 2026-03-19
Changed
- String Truncation Limits (
src/,eval/): Standardized and expanded summary truncation limits from 40–60 characters to 80 characters across JIRA titles, Slack interactions, incident root causes, and PR titles to prevent critical context loss in logs and RAG retrieval. - RAG Embedding Logic (
src/memory.py): EnhancedOllamaEmbedderto support asymmetric retrieval. The system now prepends specific instruction prefixes forsearch_queryandsearch_documentto improve embedding quality for models like Stella and MXBAI. - Causal Threading Fixes (
eval/eval_harness.py): Refined_design_doc_threadsto ensure design documents are only included in evaluation chains if they possess a validcausal_chainfact, preventing broken threads in the evaluation harness. - Codebase Formatting: Applied consistent linting and multi-line dictionary wrapping across
eval/eval_harness.pyandsrc/insider_threat.pyto match project style guidelines.
Added
- LLM-Driven Sentiment Drift (
src/insider_threat.py): Replaced static text templating with a CrewAI-powered rewriting task. Disgruntled or malicious actors now use aworker_llmto authentically rewrite Slack messages, with negativity intensity scaling based on the days since the threat "onset." - Enhanced Vector Search Filtering (
src/memory.py):- Added
type_excludesupport torecall(), allowing the RAG pipeline to explicitly ignore specific artifact types (e.g., hidingpersona_skillfrom general queries). - Implemented a "causal floor" using the
sinceparameter to allow bounded timestamp filtering ($gte and $lte) within MongoDB vector searches.
- Added
- Comprehensive Memory Testing (
tests/test_memory.py): Introduced a massive expansion of the test suite (20+ new tests) covering:- Ollama instruction prefix validation.
- Mutually exclusive filter guards in
recall(). - Upsert logic for artifacts to prevent vector index duplication.
- Event-type skip lists to reduce embedding noise for high-volume, low-signal events like standard Slack messages.
Full Changelog: v0.5.0...v1.1.1
OrgForge v1.0.0 — Preprint Release
This release corresponds to the codebase used to produce the results in:
OrgForge: A Multi-Agent Simulation Framework for Verifiable Synthetic Corporate Corpora
Jeffrey Flynt
Preprint forthcoming on arXiv
What's included
- Full simulation engine (
flow.py) with domain-routed incident assignment - LLM-driven department planning with cross-signal filtering (
day_planner.py) - Post-simulation eval dataset generator with TEMPORAL, CAUSAL, KNOWLEDGE_GAP,
RETRIEVAL, ROUTING, GAP_DETECTION, PLAN, and ESCALATION question types (eval_harness.py) - BM25 and dense retrieval baselines over a 2,715-document synthetic enterprise corpus
- HuggingFace export pipeline (
export_to_hf.py) - 22-day simulation of a 20-person sports-wearables company (Apex Athletics)
Benchmark dataset
The eval dataset generated by this release is available on HuggingFace: [link]
Reproducibility note
Results were produced using Losspost/stella_en_1.5b_v5 via Ollama for dense retrieval and BM25Okapi (rank-bm25) for sparse retrieval. Simulation non-determinism arises from LLM sampling — exact corpus content will vary across runs, but benchmark structure and question types are stable.