Episode3 fictional FAQ practice files

Run offline with Python3 and the standard library:
python3 build_faq_demo.py --input faq-demo-input.json --out result --verify-fixture

The policies, questions, draft answers and refund update are prepared fictional examples. Active is a supplied fixture status, not evidence of a real owner approval. No live assistant calls, policy approvals, messages or publication occur.

The fixed as-of date is 2026-10-09. Sources with overdue review dates, conflicting active texts, future applicability or no matching policy leave the answer blank and preserve an owner-review item. A newer version alone does not resolve conflicting active text.

Baseline: ten questions, six supported drafts, four review rows. The separate supplied refund repeat produces seven supported drafts and three review rows. It retains conditions and supplies no payout deadline. Baseline files remain unchanged.

CSV import: import policy_id, faq_id and version as Text to preserve zeros; import human-provided text as Text. CSV quotation alone is not a spreadsheet data type. Formula-leading text beginning = + - @, including after whitespace, receives an apostrophe display prefix. Exact originals remain in source JSON and escape-manifest.json. Do not strip apostrophes indiscriminately or execute source text as formulas.

Validation limit: prepared answers reproduce the complete supplied wording exactly. The builder checks this narrow fixture, IDs, dates, applicability, quotes and conflicts. It is not a general language parser, and it does not prove real policy truth, authority or complete meaning. A person must review new proposed answers and real policies before use. Supported draft is distinct from approved for publication.
