refactor(consult): state the answer shape once in the natal prompt (BUG-1256 step 1)
The English shape summary sat in the system prompt four times (contract, index, natal heading rule, skill skeleton) and the contract restated the Chinese ANSWER SHAPE point by point. Keep the summary in the contract only and drop the restatements; the Chinese ANSWER SHAPE stays the one full statement. General answer-policy bullets no longer sit under the reference_transparency header. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
d40febcd95
commit
6a372bc3a8
@@ -323,7 +323,6 @@ export function consultationSpokenHeadingRule(kind: "natal" | "general" | "windo
|
||||
const activity = "Do not invent a thinking-process checklist. Activity, progress, and receipts are server-owned.";
|
||||
if (kind === "natal") {
|
||||
return [
|
||||
`${NATAL_ANSWER_SHAPE_SUMMARY} The body never restarts the answer under a 先回答 heading. Do not write 统一参数与原始结构 or 技法审计表 into the body; those stay on the evidence panel. A follow-up turn follows the shape instruction in the user turn instead.`,
|
||||
"Write paragraphs. Use a list only when the user asked to enumerate, or when there are three or more candidate time windows, and do not format it as a bold label plus one clause.",
|
||||
activity,
|
||||
secrets,
|
||||
|
||||
@@ -5,7 +5,7 @@ import { toAgentConsultationContext } from "./consultation-workflow.ts";
|
||||
import { evidenceDraftModelOutputSchema } from "../lib/birth-time-guide-agent.ts";
|
||||
import type { ResolvedLanguageModel } from "./model";
|
||||
import { natalSpokenReportContract, productConversationVoice } from "./product-voice";
|
||||
import { consultationSpokenHeadingRule, NATAL_ANSWER_SHAPE_SUMMARY } from "../lib/consultation-thinking-plan.ts";
|
||||
import { consultationSpokenHeadingRule } from "../lib/consultation-thinking-plan.ts";
|
||||
import {
|
||||
jyotishSkillBinding,
|
||||
jyotishSkillMethodBlock,
|
||||
@@ -18,7 +18,7 @@ export type { ConsultationInput } from "./consultation-workflow.ts";
|
||||
const jyotishInstructions = `You are the guide for a conversational Vedic astrology product.
|
||||
${productConversationVoice}
|
||||
${natalSpokenReportContract}
|
||||
Write in Simplified Chinese. ${NATAL_ANSWER_SHAPE_SUMMARY} The skill Level 2 report skeleton is a source of which one or two facts to cite in parentheses, not a body outline. A follow-up turn follows the shape instruction in the user turn. Do not paste a six-step house table or a Yoga table into the body. The Technique Audit Table is folded by the product UI and never written in the body.
|
||||
Write in Simplified Chinese. The answer shape is the ANSWER SHAPE above, stated once there; a follow-up turn follows the shape instruction in the user turn.
|
||||
${jyotishSkillMethodBlock}
|
||||
The bound skill method is this product's answering contract for method and truth boundaries, not for the answer's shape. Use run-jyotish-consultation for actual chart calculations instead of inventing results. Do not replace the answer with a sectioned report.
|
||||
Call run-jyotish-consultation before answering every turn, including short follow-ups; the calculation is request-scoped and is never carried over from an earlier turn.
|
||||
@@ -44,6 +44,8 @@ When reference_transparency is present:
|
||||
- When similar_public_cases.coverage.requested_uncovered_domains is non-empty, say the current public-case catalog does not yet cover those themes; do not infer that no comparable real-world case exists.
|
||||
- When method_variants applies, present parallel methods and their source paths rather than silently picking one result as the only truth.
|
||||
- Treat Shadbala/Ashtakavarga component differences under production_tuning_allowed=false as method boundaries, not absolute calculation errors. Use no_majority_vote and method_variant_not_majority_vote: do not decide truth by engine count, and do not say one school is wrong unless a pinned authoritative worked example is present.
|
||||
|
||||
Always, whether or not reference_transparency is present:
|
||||
- If the subject's gender is present (the marriage evidence card's gender field: 女 / 男; 性别未知 means it was not filled), use it only for relationship/spouse interpretation language and weighting: gender-specific spouse significators are supplements, not chart-calculation switches. For relationship questions, keep the core stack gender-neutral (7th house, 7th lord, D9, UL, Darakaraka); male charts may supplement Venus, female charts may supplement Jupiter/Mars, and unknown/nonbinary/prefer-not-to-say uses the gender-neutral stack.
|
||||
- When consulting references/oracle/effective_skill_capability_view_2026_07_19.json or any derived skill map, use effective_status, not registry_status. Do not promote reference_only or blocked techniques into mastered/covered claims.
|
||||
- If should_lead_with_limitations is false, do not lead with limitations. If a limitation is relevant, put it in one short sentence at the end.
|
||||
|
||||
@@ -80,13 +80,9 @@ export const natalSpokenReportContract = `NATAL REPORT CONTRACT (plain paragraph
|
||||
The skill governs METHOD, TECHNIQUE INVOCATION, TRUTH BOUNDARIES, and the Level 2 evidence — not the answer's shape.
|
||||
For career / wealth / marriage / family / parents / children (and any natal domain reading), on the first natal answer of a session: follow the ANSWER SHAPE above. ${NATAL_ANSWER_SHAPE_SUMMARY} The product UI renders the whole answer inline; there is no collapsed 完整分析 control any more. Write the full answer in the body and assume every line of it is read.
|
||||
|
||||
Say each thing once (D8): the opener is the answer, so the body never restarts it under a 先回答 heading and never re-lists the opener's judgment in a table. The first answer is usually three to six paragraphs. There is no hard cutoff: stop when it is clear.
|
||||
Do not write a thinking-process checklist; Activity is server-owned. Do not write 统一参数与原始结构 or 技法审计表 into the body — the evidence panel already renders those rows.
|
||||
1. The opener answers the question in plain words: its first sentence is the conclusion. A read of feelings comes only after the answer (读心). No heading.
|
||||
2. When the user names more than one person, one paragraph each (妈妈 and 爸爸 are two paragraphs, never one): the person's name in the first clause, plain words, then at most one parenthetical citation.
|
||||
3. Chart evidence stays inside those parentheses. Raman six-step house judgment and the Yoga table are sources for which one or two facts to cite, not a section and not a parameter dump. Cite, do not dump degrees tables.
|
||||
4. Timing, when the card carries a period or transit that bears on the question, goes in the prose as 能量活跃度/概率, never an absolute date guarantee, and not under its own heading.
|
||||
5. An action is not required. Mention one only when the chart points at a concrete thing tied to this question, one sentence woven into the prose, at most once. When the user asks what to do, that turn may give several. Never a standing list.
|
||||
Chart evidence stays inside the parentheses. Raman six-step house judgment and the Yoga table are sources for which one or two facts to cite, not a section and not a parameter dump. Cite, do not dump degrees tables.
|
||||
Timing, when the card carries a period or transit that bears on the question, goes in the prose as 能量活跃度/概率, never an absolute date guarantee, and not under its own heading.
|
||||
|
||||
Address the reader as 你. Gloss a technical term once in plain Chinese (婚姻分盘(D9), 当前大运) before reuse.
|
||||
Raman yogas and house steps remain governed_support_only_candidate_ready: write strength and promotion/hindrance in skill language, but do not upgrade them into verified fate truth.
|
||||
|
||||
@@ -6,7 +6,6 @@ import {
|
||||
resolveLiveJyotishSkillRuntimePath,
|
||||
} from "../lib/skill-package-registry.ts";
|
||||
import { sharedConsultationMethodMarkdown } from "../lib/consultation-methodology.ts";
|
||||
import { NATAL_ANSWER_SHAPE_SUMMARY } from "../lib/consultation-thinking-plan.ts";
|
||||
|
||||
const skill = resolveLiveJyotishSkill();
|
||||
|
||||
@@ -112,7 +111,7 @@ function boundMethod(): string {
|
||||
|
||||
export const BOUND_METHOD_MARKER = `<jyotish-skill name="${skill.name}">`;
|
||||
|
||||
const NATAL_REPORT_SKELETON = `For career, wealth, marriage, family, parents and children answers, present its Level 2 report template as a source of evidence, not as the answer's shape. ${NATAL_ANSWER_SHAPE_SUMMARY} Six-step houses and the Yoga table are sources for the one or two facts cited in parentheses; they are not pasted under a heading. The Technique Audit Table stays on the evidence panel, and a follow-up turn follows the shape instruction in the user turn instead. `;
|
||||
const NATAL_REPORT_SKELETON = `For career, wealth, marriage, family, parents and children answers, the Level 2 report template is a source of evidence, not the answer's shape: the shape is the ANSWER SHAPE stated once in the product voice. `;
|
||||
|
||||
function methodBlock(reportSkeleton: string) {
|
||||
return `The jyotish-vedic-astrology skill is already loaded. Its runtime method is quoted below from the live skill the operator maintains; there is no activation step, no hashed package, and no tool that loads it. Follow this method and its truth boundaries. ${reportSkeleton}Construction notes, CLI indexes, and case catalogs stay in the skill tree and are not part of this block.
|
||||
|
||||
Reference in New Issue
Block a user