- .ghci: -j1 → -j4 for parallel module compilation
- scripts/compile-check: auto-detect high-RAM hosts (>16GB) and
set GHCRTS="-A256m -M20g" to reduce GC pressure
- devenv.nix: update comment only (GHCRTS still set at runtime)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Root cause: devenv shell reads devenv.nix only; IHP's Haskell setup is in
flake.nix's devenv.shells.default which is only loaded by nix develop.
Fix: create devenv.yaml to register IHP as a devenv input (pinned to the
same rev as flake.lock) with overlays.default applied. Update devenv.nix
to set IHP_LIB/IHP env vars and enable languages.haskell with pkgs.ghc
(IHP-overlay GHC) + all project packages; add ghcid explicitly.
devenv.lock pins IHP at df3922d (matches flake.lock).
scripts/compile-check: updated header comments and added IHP_LIB echo;
switches from ghcid to ghci one-shot (ghcid not available in all shells).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add Web/Controller/Prelude.hs (was missing; 8 controllers failed to import it)
- Add .ghci-core and scripts/compile-check-core to compile Layer 1+2 in
isolation without loading Main.hs or any controller/view (Layer 3)
- Fix Application/Helper/BottleneckDetector.hs: replace coerce :: Id' -> UUID
with unpackId (IHP Id' wraps a type family; Data.Coerce cannot cross it)
- Fix devenv.nix: add pkgs.nodePackages.tailwindcss so devenv process scripts
find the tailwindcss binary (devenv v2 builds scripts with only local packages)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- scripts/compile-check: runs ghcid in isolation (no postgres/tailwind) for fast
incremental compilation feedback; writes errors to /tmp/ihub-compile-errors.txt
- .ghci: add -fkeep-going so GHC reports all module errors in one pass
- WP-0016 workplan: documents module dependency layers, error-fix SOP,
and autonomous ralph-loop approach for iterative error fixing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
FR-3 (async_execute_prompt): CollectiveProposals now invokes all agents
concurrently via callAgentsBatch → single bridge subprocess with
asyncio.gather. Latency scales with slowest agent, not sum.
FR-4 (BudgetTracker): AgentDelegations passes tokenBudget to bridge;
llm-connect enforces it natively via BudgetTracker in RunConfig.
BudgetExceededError is a first-class BridgeError variant with total/
consumed/requested fields surfaced to the operator.
FR-1 (LLMServer passthrough): bridge accepts optional serverUrl field;
if present, calls POST {serverUrl}/execute instead of spawning a new
adapter. Infrastructure ready for hot-agent pre-warming (no schema
change required).
AgentBridge.hs: adds callAgentsBatch, callAgentWithBudget,
BudgetExceededError constructor, bridgeErrorMessage helper, defaultRequest,
requestToJson. All controllers updated to use bridgeErrorMessage.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>