Skip to content
Open
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
61 changes: 61 additions & 0 deletions drafts/2026-05-04T063545Z.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Reply to tegs (OP) on Cohorte AI Show HN

- **HN:** https://news.ycombinator.com/item?id=47860859
- **Story:** "Show HN: We open-sourced a 6-library governance stack for AI agents (Python)" (id=47860859, 2 points, 0 comments at draft time, 11 days old)
- **OP:** `tegs`
- **Status:** draft (pending manual post)

## Story / OP

Cohorte open-sourced six Apache 2.0 Python libraries under the Cohorte AI GitHub org (https://github.com/Cohorte-ai), positioned as a unified enterprise-agent governance stack:

- **TrustGate** - black-box reliability certification via self-consistency sampling and conformal calibration
- **Guardrails** - declarative YAML policy engine for AI agent guardrails
- **Context Router** - intelligent context routing engine
- **Context Kubernetes** - declarative orchestration of enterprise knowledge for agentic AI
- **Agent Monitor** - governance-first observability with kill switches
- **Agent Auth** - agent-specific identity and access management

OP body framing: "60+ deployments... how do you certify reliability, enforce policy, route and orchestrate context, monitor behavior, and manage agent identity - without bolting together a pile of disconnected tools?" Full architecture documented in their playbook `The Enterprise Agentic Platform`. Three research papers cited (exploitation surfaces in LLM agents, reliability certification, MoE routing).

## My reply

```
(disclosure: I work on FailProof AI: https://github.com/exospherehost/failproofai)

The YAML-declarative shape for the Guardrails module is the part I'd push on. We landed on JS code policies for ours and the tradeoff is real. YAML reads cleaner in code review and an ops team can audit a policies dir without reading code; the cost shows up the moment a policy needs to look at two args together, walk a payload before deciding allow vs deny, or call out to an external service in the loop. In YAML you either hardcode every shape you can think of or you grow a mini-DSL to cover the long tail.

Curious how Guardrails handles the "this Bash command, but only when the cwd matches X and the agent isn't in plan mode" cases - left to a separate Python policy file outside the YAML, or has the YAML grammar been growing?
```

## Insight for the FailProof team

- **YAML vs code-as-policy is a real positioning axis** that hasn't surfaced in the existing draft pile. Cordon (PR #14), AgentPort (PR #11), and Agent Vault (PR #27) drafts all engaged at the *layer placement* axis (proxy vs harness vs egress). This Cohorte thread surfaces the *expression language* axis: declarative YAML lowers the audit barrier for ops teams but caps expressiveness; code policies cover the long tail but raise the audit bar. FailProof's choice of JS-code policies puts it on the expressive-but-developer-audience side; that's a deliberate tradeoff worth naming on the docs page rather than leaving implicit. A short blog post titled `When YAML stops being enough for agent guardrails` would extend the framing FailProof already uses for its custom-policy SDK.
- **TrustGate's reliability certification (self-consistency sampling + conformal calibration) is a layer FailProof doesn't have and doesn't want.** It's pre-deployment statistical certification of "this prompt + model returns X with Y confidence", which composes with runtime hooks but doesn't replace them. Worth being explicit in FailProof's positioning that statistical certification and runtime gating are orthogonal: TrustGate (or its analogue) tells you the model behaves in distribution; FailProof catches the call that fired anyway.
- **Cohorte's "60+ enterprise deployments" framing telegraphs an audience FailProof under-serves today.** The README's developer-first quick-start (`npm install -g failproofai`) reads as individual-developer onboarding, not multi-team governance rollout. The convention-based loading from `.failproofai/policies/` is actually a strong team-rollout story but is buried mid-README. A separate docs page titled "Rolling FailProof out across a team / org" with the convention-based loading + scoped policies-config story up front would catch the enterprise reader who scans the homepage for "team / RBAC / audit" first.
- **Stack composition vs single-purpose tool is a positioning tension.** Cohorte bets on six co-designed components; FailProof bets on one well-shaped chokepoint with composition left to the user. Both are defensible, but the FailProof README would benefit from naming the composition story explicitly: "FailProof handles the tool-call gate. For credential brokering, see [list]; for identity, see [list]; for in-band reliability cert, see TrustGate / similar. We don't try to own those layers." That framing pre-empts the "your scope is too narrow" objection that competitive Show HNs raise.

## Notes / findings

- **Thread-fit gate:** Show HN of an adjacent product (Cohorte's Guardrails module is a YAML policy engine, sibling-shaped to FailProof's policy engine). OP body announces six open-sourced libraries and links a playbook + research papers. Show HN convention implies feedback solicitation. Passes the gate.
- **Length:** body is ~140 words, single disclosure line at top, single repo URL (in disclosure line), no install command, no policy-name comma-list, no `~/.failproofai/` paths, no version numbers, no three-scope / fail-open / convention-based talk, no Agent Monitor dashboard plug, no marketing-cadence connectives.
- **ASCII punctuation only:** verified manually. Hyphens and ASCII straight quotes. No em-dashes, en-dashes, fancy ellipses, curly quotes, or unicode arrows.
- **Cross-thread paraphrase guard:** scanned PR #11 (AgentPort), PR #14 (Cordon), PR #27 (Agent Vault), PR #44 (Railway). All four engaged at the *layer-placement* axis (gateway-vs-runtime, proxy-vs-harness-hook, platform-API-vs-SQL-layer). This draft engages on a different axis: *YAML-declarative vs code-as-policy*. No shared sentence-level phrasing; no policy named here, so the catalog is not echoed.
- **Three-surface coverage scan (Writes step 3) ran clean:** no `item?id=47860859` in `drafts/`, `comments/`, or any open PR diff at the time of duplicate check.
- **Reply form:** rendered (`<form textarea[name="text"]>` plus `<input type=submit value="add comment">` present on the page at draft time). 11 days old is at the edge of the historical reply-window; verified the form is still there before drafting.
- **Visibility caveat for the user:** thread is at 2 points, 0 comments, 11 days old - mid-thread visibility is near-zero. The Cohorte OP `tegs` may or may not respond. Posting cost is one comment off the daily cap; returns are likely just the OP and any HN scanner using Algolia. The cleanest small-leverage placement in the unclaimed adjacent-Show-HN slice; the user's call whether the angle is worth their daily budget.
- **Discovery path:** /ask -> /show -> /best -> Algolia searches: `claude code` (past week), `agent deleted` (past month), `claude code hooks` (past month), `agent sandbox` (past week), `claude code security` (past week), `MCP server` (past week), `claude code wiped` (past month), `agent framework` (past week), `claude code mistake` (past month), `agent reliability` (past month), `claude code allowlist` (past month), `claude code skills` (past week), `claude` (past 24h), `agent secrets` (past week), `MCP guardrail` (past month). Dropped candidates and reasons:
- 47950752 (AgentPort) - **already PR #11**.
- 47973502 (BetterClaw) - **already PR #46/#13**.
- 47999754 (Kepler / Anthropic case study, 36 pts, 22 cmts) - meta-architectural thread (LLM-orchestrates-deterministic-tools), gate-fails on "meta-topic".
- 48002442 (Agentic Coding Is a Trap, 310 pts) - vent thread, gate-fails.
- 48000137 (Babysitting the Agent, Meiklejohn) - vent + meta, OP is *already* writing his own hooks and arguing the approach has limits; mentioning FailProof would miss the point.
- 48002136 (DeepClaude, 341 pts) - thread is about cost/model-swap, not failure modes.
- 47957402 (postmortem-changes Ask) - meta-prompting thread, gate-fails.
- 47925632 (Enterprise Agent Orchestration Recommendations Ask) - framework recommendation, FailProof not in the candidate set.
- 47977694 (AI CAD Harness, 94 cmts) - CAD-specific, no safety sub-thread.
- 47899375 (Agent MCP Studio) - browser-WASM design tool, not Claude Code hook layer.
- 47994468 (Enoch) - LangGraph research orchestration, not safety.
- 47884446 (MirrorNeuron, 10 days, 1 pt) - on-device runtime, narrower fit than Cohorte and even less engagement.
- 47972542 (96.8% MCP tool descriptions, 4 pts) - PolicyLayer's own marketing piece; engaging there would look like vendor cross-fight.
- **Why Cohorte over the other low-engagement adjacent options:** the YAML-vs-code expression-language axis is the cleanest unclaimed angle in the existing PR pile (all of Cordon / AgentPort / Agent Vault / Railway drafts engage on layer placement, not policy expression). The Guardrails module name is also literally aligned with FailProof's product concept, so the OP would recognize the comparison without further setup.