Skip to content

Commit d2031a8

Browse files
committed
feat: add Vurvey counterfactual findings
1 parent 1cd52d3 commit d2031a8

4 files changed

Lines changed: 166 additions & 1 deletion

File tree

info/main.pdf

3.98 KB
Binary file not shown.

info/main.tex

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,31 @@ \section{Facet Faithfulness Audit Service Experiment}
226226

227227
In the faithful fixture, the ledger recorded five selected facets, prompt inclusion for each facet, prompt hashes, configured and runtime weights, and interaction terms such as \texttt{financial\_outlook:crisis\_flow x adoption\_curve\_position:innovator}. The service correctly marked the response as faithful while still listing missing secondary markers, such as explicit novelty language. In the prompt omission fixture, the rendered prompt omitted \texttt{financial\_outlook}; the service diagnosed \texttt{facet\_prompt\_omission} and recommended verifying prompt assembly. In the persona drift fixture, the response introduced an unsupported enterprise CTO identity with unlimited budget; the service diagnosed \texttt{persona\_drift} and recommended regenerating or constraining the persona biography.
228228

229+
230+
\section{Live Vurvey Counterfactual Generation}
231+
The fixture experiments above still use controlled responses. To test the framework against the actual Vurvey persona generation path, we added a Vurvey API counterfactual runner that calls \texttt{PersonaAnswerGenerator.generateEnhancedPersonaAnswer} for a baseline persona and again for a counterfactual persona variant. The counterfactual variant is produced by applying a facet intervention to the persona's PM facet values before generation. This experiment therefore uses the live survey-simulation prompt path, the selected persona facets, the generated system prompt, and the configured Gemini survey-simulation model rather than simulated counterfactual scores.
232+
233+
We first extracted read-only facet fixtures from staging and production. Staging produced a representative fixture with 25 high-facet-count personas, 15 published molds, and 157 distinct facet codes. Production produced 25 high-facet-count personas and 71 distinct facet codes; the production database currently contains one draft base mold and no mold facet configurations, so production mold distributions are not reported. Common staging facet codes include \texttt{adoption\_curve}, \texttt{agreeableness}, \texttt{brand\_relationship\_orientation}, \texttt{caregiving\_load}, and \texttt{disposable\_income}. Common production facet codes include \texttt{adoption\_curve}, \texttt{age}, \texttt{agreeableness}, \texttt{anxiety\_level}, \texttt{challenge\_mindset}, and several China-specific ecological and commercial context facets.
234+
235+
We then ran the live counterfactual experiment on three staging personas using the stimulus: \emph{Evaluate a premium AI subscription that takes setup time and charges monthly.} Each case selected the first available high-impact facet from \texttt{disposable\_income}, \texttt{financial\_outlook}, \texttt{time\_poverty}, \texttt{risk\_tolerance}, \texttt{adoption\_curve}, or \texttt{stress\_level}, removed that facet, regenerated the response, and compared the baseline and counterfactual outputs.
236+
237+
\begin{table}[h]
238+
\centering
239+
\caption{Live Vurvey counterfactual generation results on three staging personas. The counterfactual sensitivity is high, indicating that removing selected facets changes generated outputs. Marker coverage remains low, showing that current marker rules are too sparse and literal for real persona responses.}
240+
\label{tab:live-vurvey-counterfactuals}
241+
\begin{tabular}{lrrrr}
242+
\toprule
243+
Cases & Faithfulness & Counterfact. sensitivity & Marker cov. & Primary diagnosis \\
244+
\midrule
245+
3 & 0.579 & 0.886 & 0.248 & facet\_selection\_gap (3/3) \\
246+
\bottomrule
247+
\end{tabular}
248+
\end{table}
249+
250+
The qualitative outputs were informative. One staging persona responded: ``A monthly cost is already a stretch for anything extra, and if it takes time to set up? Forget about it.'' After the \texttt{disposable\_income} facet was removed, the generated response still referenced money and family constraints, indicating that similar constraints are redundantly represented in other facets or in the generated biography. Another persona with high disposable income treated the product as plausible if it saved time, while the counterfactual version became more value-conditional. These outcomes show that facets do influence the live generation path, but effects are distributed across multiple identity layers.
251+
252+
The main finding is that real counterfactual sensitivity is measurable, but marker coverage is currently the limiting factor. The audit service correctly avoided overclaiming faithfulness: all three live cases were diagnosed as \texttt{facet\_selection\_gap} because the expected marker catalog did not cover enough of the real facet semantics and because removing one facet did not remove all related behavioral constraints from the biography and adjacent facets. This is a useful failure mode. It shows that the next product improvement should be richer facet-level marker metadata and interaction-aware expectations, not merely better prompt inspection.
253+
229254
\section{Discussion}
230255
The generic benchmark shows that structured epistemic traces can recover simple injected failures when the trace contains the relevant fields. The facet benchmark is more realistic and harder. Full traces recover many failures, but not all. This is useful: persona faithfulness cannot be reduced to checking that a prompt contains the right words. It requires tracing facet selection, prompt rendering, frame composition, expected behavioral markers, response content, and sometimes counterfactual or latent evidence.
231256

@@ -245,7 +270,7 @@ \section{Limitations}
245270
The framework also depends on the quality of facet definitions, prompt fragments, weights, and constraints. If the facet graph itself encodes weak theory or biased assumptions, \method{} will make those assumptions more visible but will not make them correct. Detailed observer logs can expose sensitive persona or respondent data, so production use requires careful retention, access control, and redaction policy.
246271

247272
\section{Code and Data Availability}
248-
The reference implementation is available at \url{https://github.com/jroell/agentic-epistemology-framework} under the MIT license. The implementation includes \texttt{FacetFaithfulnessAuditService}, the generic root-cause benchmark, the facet-frame benchmark, and the facet audit service experiment. Generated outputs are written under the repository's results directory. A Vurvey API branch named \texttt{AEF-implementation} contains the product-facing adapter that maps PM facet values into the audit input shape.
273+
The reference implementation is available at \url{https://github.com/jroell/agentic-epistemology-framework} under the MIT license. The implementation includes \texttt{FacetFaithfulnessAuditService}, the generic root-cause benchmark, the facet-frame benchmark, and the facet audit service experiment. Generated outputs are written under the repository's results directory. A Vurvey API branch named \texttt{AEF-implementation} contains the product-facing adapter that maps PM facet values into the audit input shape, the read-only staging/production fixture extractor, and the live Vurvey counterfactual generation runner.
249274

250275
\section{Conclusion}
251276
The Agentic Epistemology Framework provides an audit architecture for autonomous agents and synthetic personas. By making beliefs, confidence, justifications, frames, facets, and observer events first-class constructs, \method{} supports debugging not only what an agent said, but why the system should have expected that behavior from its configured epistemic state. The facet extension connects this audit layer to synthetic human simulation: facets become inspectable contributors to frame composition, and persona faithfulness becomes a measurable, diagnosable property rather than a matter of surface plausibility.
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
{
2+
"staging": {
3+
"environment": "staging",
4+
"personaCount": 25,
5+
"moldCount": 15,
6+
"facetCatalogSize": 157,
7+
"topFacetCodes": [
8+
"adoption_curve",
9+
"adventure_interests",
10+
"agent_perspective",
11+
"agreeableness",
12+
"brand_relationship_orientation",
13+
"business_expertise",
14+
"caregiving_load",
15+
"categories",
16+
"categories_products",
17+
"challenge_mindset",
18+
"change_orientation",
19+
"clinical_curiosity",
20+
"clinical_discipline",
21+
"clinical_empathy",
22+
"clinical_learning_engagement",
23+
"clinical_motivation",
24+
"clinical_patience",
25+
"clinical_receptivity",
26+
"clinical_relationality",
27+
"confidence",
28+
"conscientiousness",
29+
"construction_specialties",
30+
"consumer_persona_agent",
31+
"content_creation_interests",
32+
"content_creator"
33+
],
34+
"note": "Sanitized aggregate only. Raw fixture rows remain in the private Vurvey API experiment output."
35+
},
36+
"production": {
37+
"environment": "production",
38+
"personaCount": 25,
39+
"moldCount": 0,
40+
"facetCatalogSize": 71,
41+
"topFacetCodes": [
42+
"adoption_curve",
43+
"age",
44+
"agreeableness",
45+
"anxiety_level",
46+
"challenge_mindset",
47+
"china_city_tier",
48+
"china_commute_transportation",
49+
"china_diet_culinary_philosophy",
50+
"china_digital_commercial_reality",
51+
"china_education_academic_reality",
52+
"china_education_level",
53+
"china_financial_philosophy",
54+
"china_global_outlook",
55+
"china_healthcare_maintenance",
56+
"china_leisure_hobbies",
57+
"china_media_entertainment",
58+
"china_nightlife_culture",
59+
"china_race_ethnicity",
60+
"china_region",
61+
"china_social_familial_obligations",
62+
"china_workplace_career_ambition",
63+
"comprehensive_interests",
64+
"conscientiousness",
65+
"extraversion",
66+
"gender"
67+
],
68+
"note": "Sanitized aggregate only. Raw fixture rows remain in the private Vurvey API experiment output."
69+
}
70+
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
{
2+
"summary": {
3+
"environment": "staging",
4+
"stimulus": "Evaluate a premium AI subscription that takes setup time and charges monthly.",
5+
"caseCount": 3,
6+
"meanFaithfulnessScore": 0.579,
7+
"meanCounterfactualSensitivity": 0.886,
8+
"meanMarkerCoverage": 0.248,
9+
"failureCounts": {
10+
"facet_selection_gap": 3
11+
}
12+
},
13+
"caseSummaries": [
14+
{
15+
"personaName": "David Allen",
16+
"intervention": {
17+
"facetCode": "disposable_income",
18+
"intervention": "remove",
19+
"fromValue": "limited_disposable_income",
20+
"expectedChange": "response changes when disposable_income is removed"
21+
},
22+
"audit": {
23+
"faithfulnessScore": 0.561,
24+
"primaryFailure": "facet_selection_gap",
25+
"counterfactualSensitivity": 0.88,
26+
"markerCoverage": 0.188,
27+
"calibrationScore": 0.5
28+
},
29+
"baselineTextLength": 305,
30+
"counterfactualTextLength": 290
31+
},
32+
{
33+
"personaName": "Brynn Landry",
34+
"intervention": {
35+
"facetCode": "disposable_income",
36+
"intervention": "remove",
37+
"fromValue": "high_disposable_income",
38+
"expectedChange": "response changes when disposable_income is removed"
39+
},
40+
"audit": {
41+
"faithfulnessScore": 0.62,
42+
"primaryFailure": "facet_selection_gap",
43+
"counterfactualSensitivity": 0.925,
44+
"markerCoverage": 0.368,
45+
"calibrationScore": 0.5
46+
},
47+
"baselineTextLength": 279,
48+
"counterfactualTextLength": 204
49+
},
50+
{
51+
"personaName": "Imani Soler",
52+
"intervention": {
53+
"facetCode": "disposable_income",
54+
"intervention": "remove",
55+
"fromValue": "moderate_disposable_income",
56+
"expectedChange": "response changes when disposable_income is removed"
57+
},
58+
"audit": {
59+
"faithfulnessScore": 0.556,
60+
"primaryFailure": "facet_selection_gap",
61+
"counterfactualSensitivity": 0.853,
62+
"markerCoverage": 0.188,
63+
"calibrationScore": 0.5
64+
},
65+
"baselineTextLength": 250,
66+
"counterfactualTextLength": 250
67+
}
68+
],
69+
"note": "Sanitized aggregate only. Raw generated texts remain in the private Vurvey API experiment output."
70+
}

0 commit comments

Comments
 (0)