Files
imbad0202__academic-researc…/shared/contracts/writer/full.json
T
Edward Cheng-I Wu 6b7ee6dcae fix: Astra request compat, no-delegation citation transport, hedge/quota prompt repairs, audit provenance (#823–#826) (#827)
* fix: Astra request compatibility, no-delegation citation transport, hedge/quota prompt repairs, audit provenance (#823 #824 #825 #826)

#823 — OpenAI request builders (smoke entrypoint + documented example) drop
`temperature`, which GPT-6 Astra rejects; the per-model effort vocabulary
lives in scripts/cross_model_verification/openai_effort_guard.sh, sourced by
both, and an unsupported explicit Astra value fails before curl. Hermetic
fake-curl test runs both surfaces.

#824 — the contained Codex citation transport rejects effort=ultra with
REASONING_EFFORT_REQUIRES_DELEGATION before detection/auth/tempdir/launch on
both entry paths (codex-cli 0.153.4 defines ultra as the multiAgentMode
replacement). Model-independent by design.

#825 — hedging can no longer rescue an unsupported claim (writer recovery
tree, CER fallback row, temporal rule 5 in writer + both compiler mirrors,
writer contract D2); universal prose quotas in the writer, compilers,
writing_quality_check.md, academic-paper/SKILL.md, and contract D6 become
diagnostics subordinate to author/venue requirements. Audit inventory
corrected in place; held-out seed evals/heldout/unsupported_claim_recovery
(NOT_RUN) registered.

#826 — run_codex_audit.sh pins gpt-6-astra/xhigh and records both in a new
sidecar `model` block; claim_audit_pipeline binds an unknown judge identity
to a run-local cache key (no cross-run reuse) instead of defaulting to
gpt-5.5-xhigh.

Review: /simplify (4 angles), codex gpt-5.6-sol xhigh 2 rounds (r1: 1 P1 +
1 P2 + 2 P3 fixed; r2: 0 P1/P2), /security-review 0 findings; all 102
spec-consistency steps + pytest manifest replayed locally.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BNKiXpdHx1T5F5RbXT2Ueu

* docs(claude): record the #824 ultra reversal in the v3.21.2 key-additions line

The v3.21.2 bullet still said the contained Codex citation transport accepts
ultra; #824 on this branch rejects it as a delegation request. Add the
reversal so the live instruction surface matches the transport.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K7emV5r2aqZDJzAyYVuuDo

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-06 08:08:30 +09:00

88 lines
3.6 KiB
JSON

{
"contract_id": "academic_paper/writer_full/v1",
"mode": "writer_full",
"stage": "writer_full_drafting",
"baseline_version": "v3.6.6",
"acceptance_dimensions": [
{
"id": "D1",
"name": "section_completeness",
"description": "Every section in the Structure Architect's approved outline is written; no [MATERIAL GAP] placeholders remain unresolved at handoff to citation_compliance.",
"priority": "mandatory"
},
{
"id": "D2",
"name": "citation_density",
"description": "Every factual claim carries at least one citation; uncited factual claims either gain a source, are omitted, or are marked [MATERIAL GAP] for author review; hedging language alone does not satisfy this dimension. Exception (#548): absence/novelty claims cannot cite a source for an absence — they satisfy this dimension via documented-search provenance in the bounded form plus a citation to the named nearest prior work where adjacent work exists; the explicit absence-of-adjacent-work statement satisfies it otherwise.",
"priority": "mandatory"
},
{
"id": "D3",
"name": "argument_blueprint_fidelity",
"description": "Each section follows the CER chains delivered by argument_builder_agent (the Argument Blueprint runtime artefact); topic sentences match the claim, evidence cites assigned sources, and explanation links back to the section purpose. The Argument Blueprint, not the contract, is the source of CER chains.",
"priority": "mandatory"
},
{
"id": "D4",
"name": "total_word_count",
"description": "Final draft total stays within plus or minus 10 percent of the target declared in the Paper Configuration Record.",
"priority": "high"
},
{
"id": "D5",
"name": "per_section_word_count",
"description": "Each section stays within plus or minus 15 percent of the per-section allocation declared in the Paper Configuration Record.",
"priority": "high"
},
{
"id": "D6",
"name": "paragraph_structure",
"description": "Body paragraphs serve their section's purpose with a clear point, adequate cited support, explanation, and linkage, judged by clarity and evidential support rather than a TEEL percentage or length preset; author and venue requirements take priority. Inter-section transitions present.",
"priority": "normal"
},
{
"id": "D7",
"name": "register_consistency",
"description": "Academic register holds throughout; no colloquial mixing; discipline-appropriate phrasing per the Paper Configuration Record.",
"priority": "normal"
}
],
"pre_commitment_artifacts": {
"acceptance_criteria_paraphrase": {
"minimum_dimensions": "all"
}
},
"failure_conditions": [
{
"condition_id": "F1",
"severity": 90,
"expression": "any mandatory dimension scores 'block'",
"action": "writer_decision=escalate_to_evaluator"
},
{
"condition_id": "F4",
"severity": 75,
"expression": "any mandatory dimension scores 'warn'",
"action": "writer_decision=revise_in_phase_4b"
},
{
"condition_id": "F2",
"severity": 60,
"expression": "any high-priority dimension scores 'block'",
"action": "writer_decision=revise_in_phase_4b"
},
{
"condition_id": "F3",
"severity": 40,
"expression": "any high-priority dimension scores 'warn'",
"action": "writer_decision=revise_in_phase_4b"
},
{
"condition_id": "F0",
"severity": 10,
"expression": "every mandatory dimension scores 'pass'",
"action": "writer_decision=accept"
}
]
}