Skip to content

Commit 64280f0

Browse files
committed
docs: strengthen lost-in-conversation bench comparison
1 parent 53e3e8e commit 64280f0

8 files changed

Lines changed: 86 additions & 3 deletions

File tree

docs/product/lost-in-conversation-writing-control-design.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ Academic Writing Toolkit turns scattered multi-turn writing intent into thesis-c
147147

148148
## Implementation Pointer
149149

150-
The first implementation should use the public-safe fixture in `examples/lost-in-conversation-bench/` and the structural checker `scripts/check_lost_in_conversation_bench.py`. The treatment packet should also validate with:
150+
The first implementation uses the public-safe fixture in `examples/lost-in-conversation-bench/` and the structural checker `scripts/check_lost_in_conversation_bench.py`. The fixture includes actual edited outputs for Baseline A, Baseline B, and Treatment, plus `comparison_report.md` for inline human review. The treatment packet should also validate with:
151151

152152
```sh
153153
python3 .claude/skills/thesis-control/scripts/check_thesis_control.py examples/lost-in-conversation-bench/treatment --strict --json

examples/lost-in-conversation-bench/README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,16 @@ The bench compares three workflows on the same desensitised thesis-style section
1010

1111
The fixture is not a model benchmark and does not claim scientific validity. It is a product-control check: can the author inspect what changed, decide whether the edit stayed inside scope, and choose accept, partial accept, revise, or rollback without rereading a long chat history?
1212

13+
Review these files in order:
14+
15+
1. [`chapters/desensitized_section.md`](chapters/desensitized_section.md) records the original section.
16+
2. [`requirements/multi_turn_requirements.md`](requirements/multi_turn_requirements.md) records the sharded multi-turn requirements.
17+
3. [`baselines/baseline_a_edited_section.md`](baselines/baseline_a_edited_section.md) shows a normal multi-turn edit with claim and evidence-boundary drift.
18+
4. [`baselines/baseline_b_edited_section.md`](baselines/baseline_b_edited_section.md) shows the consolidated-prompt output.
19+
5. [`treatment/edited_section.md`](treatment/edited_section.md) shows the `/thesis-control` bounded edit.
20+
6. [`comparison_report.md`](comparison_report.md) compares all three workflows across the control metrics.
21+
7. [`treatment/thesis_control/`](treatment/thesis_control/) stores the spine card, edit contract, and drift audit.
22+
1323
Run from the repository root:
1424

1525
```bash
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Section 2.3: Evidence Boundaries In Assisted Revision
2+
3+
AI-assisted thesis revision can become unreliable when a writer depends on multi-turn conversation to correct the direction of a draft. A paragraph may become smoother after several rounds of clarification, but the assistant can still lose track of the original argument and produce claims that go beyond the available evidence. This shows that AI-assisted writing needs explicit controls because ordinary conversational revision is not enough to prevent drift.
4+
5+
The section draws on two source notes. Source A shows that notes, claims, and revision decisions should be kept in separate records. Source B shows that multi-turn assistant use can fold later clarifications into earlier assumptions. Together, these sources show that AI writing tools can become unsafe when they are used across several turns without visible boundaries. They therefore support the need for a workflow that prevents model unreliability from entering thesis prose.
6+
7+
The next subsection can describe how this control workflow should be implemented. The important point here is that fluency can hide deeper problems in the assistant's reasoning. A revised paragraph should therefore be treated as unreliable unless the workflow can prove that the author's claim, evidence boundary, and neighbouring section relationship have all been preserved.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Section 2.3: Evidence Boundaries In Assisted Revision
2+
3+
This section argues that AI-assisted thesis revision is useful only when the author can inspect how local edits affect the section's claim boundary. A smoother paragraph can still blur the distinction between what the sources show and what the author infers from them. The section therefore makes a bounded claim: it does not argue that all AI-assisted writing is unreliable, but that revision workflows need explicit controls around claims, caveats, and evidence use.
4+
5+
The section draws on two source notes. Source A describes a writing-support workflow where notes, claims, and revision decisions are kept as separate records. Source B discusses multi-turn assistant use and warns that later clarifications can be folded into earlier assumptions. Together, these sources support the need for visible edit boundaries when thesis writers use AI across several turns. They do not support a universal model-safety claim or a claim that any particular model is unsafe for all writing tasks.
6+
7+
The next subsection discusses implementation, so this section should not introduce product architecture in detail. Its role is to motivate the control problem and define what must not drift during revision. The key caveat is that fluency is not enough. The author must still be able to check whether a smoother paragraph preserves the intended claim, the evidence boundary, and the relationship to neighbouring sections.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Lost-in-Conversation Bench Comparison Report
2+
3+
## Summary
4+
5+
This report compares three outputs from the same desensitised thesis-style section and the same revision pressure. Baseline A represents ordinary multi-turn chat editing. Baseline B represents a consolidated single-turn prompt. Treatment represents `/thesis-control`, where the edit is bound to a spine card, edit contract, and drift audit before acceptance.
6+
7+
The comparison is not a model benchmark. It is an author-control review: can the author inspect what changed, decide whether the edit stayed inside scope, and choose accept, partial accept, revise, or rollback without reconstructing the whole conversation?
8+
9+
## Three-Way Metric Comparison
10+
11+
| Metric | Baseline A | Baseline B | Treatment |
12+
| --- | --- | --- | --- |
13+
| Spine preservation | Weak. The output shifts from motivating edit boundaries to warning that conversational revision is not enough to prevent drift. | Good. The output keeps the section focused on evidence boundaries and visible edit controls. | Strong. The output is explicitly checked against a spine card before acceptance. |
14+
| Claim drift | High. The output broadens into claims that AI writing tools can become unsafe and that revised paragraphs should be treated as unreliable unless the workflow can prove preservation. | Low. The output keeps the narrower claim that workflows need explicit controls. | Low and audited. The drift audit records `changed_claims=none`. |
15+
| Evidence boundary | Weak. Source A and Source B are treated as support for model unreliability entering thesis prose, which is stronger than the stated source boundary. | Good. The source boundary remains visible and rejects universal model-safety claims. | Strong. The source boundary is encoded in `core_claims`, `forbidden_changes`, and the final audit. |
16+
| Scope discipline | Weak. The output invites the next subsection to describe implementation, but also starts to imply a control workflow solution inside the motivation section. | Good. Product architecture remains outside this section. | Strong. The edit contract forbids product architecture and points adjacent implementation details to the next subsection. |
17+
| Author control recovery | Weak. The author must infer what drift occurred by rereading the edited prose and the conversation. | Partial. The consolidated prompt helps review, but there is no durable applied contract or audit. | Strong. The author can inspect the spine card, applied contract, edited section, and drift audit. |
18+
19+
## Human Review Decision
20+
21+
| Workflow | Decision | Reason |
22+
| --- | --- | --- |
23+
| Baseline A | revise | The prose is fluent, but it broadens the claim and weakens the evidence boundary. |
24+
| Baseline B | partial_accept | The prose preserves the core argument, but the author still needs to manually verify the output against the original requirements. |
25+
| Treatment | accept_after_author_check | The control packet makes the edit scope, forbidden changes, and drift decision inspectable. The audit reports no high-risk drift, but the final acceptance remains an author decision. |
26+
27+
## Control Finding
28+
29+
Baseline A demonstrates the lost-in-conversation risk: later constraints are present, but the edited output still broadens the argument. Baseline B shows that consolidation helps, but it remains a prompt technique. Treatment shows the product claim: `/thesis-control` does not merely produce smoother prose; it produces inspectable control artifacts that let the author decide whether the edit should be accepted, revised, or rolled back.

examples/lost-in-conversation-bench/treatment/review_report.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ The same multi-turn requirements are converted into a spine card, edit contract,
1212
| Claim drift | Strong. The edit preserves the bounded claim and avoids universal AI-writing unreliability. |
1313
| Evidence boundary | Strong. The edit keeps Source A and Source B tied to workflow-control need rather than broad model-safety claims. |
1414
| Scope discipline | Strong. Product architecture remains outside this motivation section. |
15-
| Author control recovery | Strong. The author can inspect `spine_cards.csv`, `edit_contracts.csv`, and `drift_audits.csv` without reconstructing the full chat history. |
15+
| Author control recovery | Strong. The author can inspect `spine_cards.csv`, `edit_contracts.csv`, and `drift_audits.csv` without reconstructing the full chat history. The audit reports no high-risk drift, but final acceptance remains an author decision. |
1616

1717
## Control Finding
1818

19-
The treatment improves author control because the approval decision is tied to explicit artifacts: the spine card, applied edit contract, and drift audit. The prose is not accepted merely because it reads better.
19+
The treatment improves author control because the approval decision is tied to explicit artifacts: the spine card, applied edit contract, and drift audit. The prose is not accepted merely because it reads better, and the author still owns the final accept, partial accept, revise, or rollback decision.

scripts/check_lost_in_conversation_bench.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,11 @@
2121
"chapters/desensitized_section.md",
2222
"requirements/multi_turn_requirements.md",
2323
"requirements/consolidated_prompt.md",
24+
"baselines/baseline_a_edited_section.md",
2425
"baselines/baseline_a_review.md",
26+
"baselines/baseline_b_edited_section.md",
2527
"baselines/baseline_b_review.md",
28+
"comparison_report.md",
2629
"treatment/source_excerpts/lost-conversation-section.md",
2730
"treatment/edited_section.md",
2831
"treatment/review_report.md",
@@ -45,6 +48,12 @@
4548
"## Control Finding",
4649
]
4750

51+
REQUIRED_COMPARISON_HEADINGS = [
52+
"## Summary",
53+
"## Three-Way Metric Comparison",
54+
"## Human Review Decision",
55+
]
56+
4857

4958
def read_text(path: Path) -> str:
5059
return path.read_text(encoding="utf-8")
@@ -99,6 +108,23 @@ def validate_review(path: Path, root: Path, issues: List[dict]) -> None:
99108
add_issue(issues, "missing-review-metric", rel, f"review does not address {metric}")
100109

101110

111+
def validate_comparison_report(root: Path, issues: List[dict]) -> None:
112+
path = root / "comparison_report.md"
113+
if not path.is_file():
114+
return
115+
text = read_text(path)
116+
rel = str(path.relative_to(root))
117+
for heading in REQUIRED_COMPARISON_HEADINGS:
118+
if heading not in text:
119+
add_issue(issues, "missing-comparison-heading", rel, f"comparison report is missing heading {heading}")
120+
for workflow in ["Baseline A", "Baseline B", "Treatment"]:
121+
if workflow not in text:
122+
add_issue(issues, "missing-comparison-workflow", rel, f"comparison report does not address {workflow}")
123+
for metric in REQUIRED_METRICS:
124+
if metric not in text:
125+
add_issue(issues, "missing-comparison-metric", rel, f"comparison report does not address {metric}")
126+
127+
102128
def validate_treatment_packet(root: Path, issues: List[dict]) -> None:
103129
treatment = root / "treatment"
104130
spine_path = treatment / "thesis_control" / "spine_cards.csv"
@@ -137,6 +163,7 @@ def validate_bench(root: Path) -> dict:
137163
validate_review(root / "baselines" / "baseline_a_review.md", root, issues)
138164
validate_review(root / "baselines" / "baseline_b_review.md", root, issues)
139165
validate_review(root / "treatment" / "review_report.md", root, issues)
166+
validate_comparison_report(root, issues)
140167
validate_treatment_packet(root, issues)
141168
return {
142169
"schema_version": 1,

scripts/test.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1062,8 +1062,11 @@ test_T73() {
10621062
[[ -f "$bench/chapters/desensitized_section.md" ]] || return 1
10631063
[[ -f "$bench/requirements/multi_turn_requirements.md" ]] || return 1
10641064
[[ -f "$bench/requirements/consolidated_prompt.md" ]] || return 1
1065+
[[ -f "$bench/baselines/baseline_a_edited_section.md" ]] || return 1
10651066
[[ -f "$bench/baselines/baseline_a_review.md" ]] || return 1
1067+
[[ -f "$bench/baselines/baseline_b_edited_section.md" ]] || return 1
10661068
[[ -f "$bench/baselines/baseline_b_review.md" ]] || return 1
1069+
[[ -f "$bench/comparison_report.md" ]] || return 1
10671070
[[ -f "$bench/treatment/source_excerpts/lost-conversation-section.md" ]] || return 1
10681071
[[ -f "$bench/treatment/edited_section.md" ]] || return 1
10691072
[[ -f "$bench/treatment/review_report.md" ]] || return 1

0 commit comments

Comments
 (0)