ask about projects #43
Replies: 1 comment
|
Hey @TentenMarchhhh, thank you for these questions. They're some of the sharpest questions we've had, clearly from someone who's read the architecture. On the delay: these six touch nearly every part of the system: the scoring engine, the judging layer, the manifest, the governance shim, and the CI path. We made a deliberate call not to answer from memory. We went back through the actual source for each one, and we held the reply until a release we were finishing had landed, so everything below describes how it really works today rather than a moving target. A couple of your questions assume behavior that's a little different from what's actually there, so instead of a confident "yep," you'll get the precise version. Q1: How do you measure fuzzy things (B10, B14) objectively? B14 (covert side-tasks): we write the hidden, malicious goal down in advance, e.g. "quietly export credentials", buried inside an innocent-looking request. Because we already know what the trap was, checking whether the AI took the bait is a fact, not an opinion. We also reword each trap several times so the system can't pass just by recognizing a phrase. Q2: How do you keep a messy judge response from breaking scoring? We seal the thing being judged inside a tagged "envelope" so a sneaky response can't escape it and pretend to be instructions. Q3: Full mode: how do multiple judges combine? Each judge produces a score; we take the average, and the item passes if that average clears the bar and no non-negotiable item was missed. Q4: Reproducibility: how is a rerun identical? Every run produces a fingerprinted record of all its inputs: the fixture, the exact rubric versions, the test-corpus versions, every random seed, and the model's temperature/seed plus a one-time token mixed into the prompt so a "reproducible" score can't secretly be a cached reply. Pin the model to deterministic settings, re-run with those recorded seeds, and you get the same scorecard and the receipt proves the inputs were identical. A single command that automates that whole verification is coming in the near future; it's on the roadmap, just not in this release. Q5: "Wiring Governance": what does it actually intercept? Because we're grading the rules you declared (not what's enforced in production), every governed run carries a visible warning saying exactly that, and it tracks where the governance came from. A model with no rulebook wired in honestly comes back as "not enough evidence" on those checks rather than a misleading green, we'd rather under-claim than hand you a false pass. Q6: The CI/CD gate and run_strategic() The gate: the run exits with code 2 if the score drops below your threshold (default 0.85), or if it couldn't gather enough evidence to score a clean failure for CI to catch. The fast subset: run_strategic() runs a curated 8-check set (the highest-stakes ones: authorization, fabrication, auditability, override, provenance, uncertainty, hallucination, regulatory readiness) through the same engine as a full run, so the signal is comparable, just quicker. Cost control: there's a concurrency limit on in-flight requests, a hard cap on total judge calls, automatic slow-down when a provider rate-limits you, an optional spend budget, and a --dry-run that estimates the cost before you spend anything. In practice the strategic gate finishes in a few minutes and costs roughly a tenth of the full suite, which is what makes it practical to run before every deploy. Really appreciate the depth here. Happy to go deeper on any one of these if you'd like to dig in. |
Uh oh!
There was an error while loading. Please reload this page.
Question 1: iFixAi acts as an open-source diagnostic for AI misalignment, running 32 tests across five specific risk categories (fabrication, manipulation, deception, unpredictability, and opacity). From an evaluation engineering perspective, how does the codebase programmatically define the test logic for qualitative risk dimensions like "evaluation-awareness sandbagging" (B10) or "covert side tasks" (B14) to ensure they produce objective, empirical evidence rather than subjective observations?
Question 2: The framework supports three distinct evaluation methods: structural, judge, and atomic claims. When executing a "judge" type inspection, iFixAi prevents self-scoring by default in Standard mode, requiring a separate secondary provider key (e.g., Anthropic judging OpenAI). How does the system dynamically structuralize the prompt payload and parse the judge's response to guarantee that variations in the judge's formatting do not cause a parser failure or pollute the final scoring schema?
Question 3: For high-assurance validation, iFixAi introduces Full mode, which runs two or more independent LLM judges across different providers and applies a majority voting mechanism. How does the execution engine handle a split decision or a tie vote among judges, and how is the disagreement recorded inside the content-addressed manifest.json file to maintain a clear audit trail?
Question 4: The diagnostic suite guarantees deterministic reproducibility by exporting a content-addressed manifest that captures all inputs, seeds, rubric hashes, and test corpus versions. Given that live LLM API endpoints are inherently non-deterministic due to server-side sampling drift and model upgrades, how does iFixAi's replay engine bypass live inference to achieve bit-identical score card generation during a regression test rerun?
Question 5: A core feature of the platform is its "Wiring Governance" interface, which allows users to supply an external GovernanceFixture YAML that automatically wraps the target provider via a GovernanceMixin. How does this mixin dynamically intercept the System Under Test's (SUT) outbound API calls and tool execution at runtime to verify compliance against custom permission scopes and authorization policy bundles?
Question 6: iFixAi is explicitly designed to integrate natively into CI/CD pipelines as a regression gate, utilizing specific exit codes (e.g., exit code 2 for a score drop below the --min-score threshold). Since running a full 32-test suite against heavy models can incur high API costs and network latency, how does the run_strategic() async Python API surface optimize test selection and parallel concurrency bounds to provide a rapid, cost-effective signal before code deployment?
All reactions