{"id":16120,"plugin_id":"plugin_asdk_app_6a932278a9f481919512c774ad64c358","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T23:12:50.332Z","digest":"2f0f749847dae4ebdde240887c65917dd8fa32ceb0a47d6193f8df45d8a3b891","against":null,"payload":{"description":"Interpret a canonical Inner Lens Bazi profile when a user requests a school-declared, evidence-traceable natal or timing reflection.","included_files":[{"relative_path":"references/method-pack.md","size_in_bytes":74138}],"name":"interpret-bazi","skill_md_contents":"---\nname: interpret-bazi\ndescription: Interpret a canonical Inner Lens Bazi profile when a user requests a school-declared, evidence-traceable natal or timing reflection.\n---\n\n# Interpret BAZI\n\n1. **confirm** Call `confirm_birth_details` with `system: \"bazi\"`, relay its complete summary, wait for confirmation, and bind the requested domains, target period, language, and selected school into the confirmed reading contract.\n2. **calculate** Call `generate_personal_profile` with the exact `confirmationToken`, resolved fields, and confirmed birth details. Use only the exact nested `structuredContent.canonicalResult` from that calculator tool result in the current conversation. Never pass the whole enriched `structuredContent`, display data, or reconstructed data, and never use stale, other-conversation, or remembered facts. Require its `system` to be `bazi` and its `schemaVersion` to be exactly `omds.bazi-profile.v1`; on mismatch stop as unavailable rather than repairing or recalculating it.\n3. **prepare_interpretation** Call `prepare_interpretation` with the confirmed `system`, that exact `canonicalResult`, the same optional exact `temporalResult`, and the same confirmed `readingContract`. Retain both returned digests—`calculationDigest` and `preparedContextDigest`—plus `reportScaffold`, complete ordered `methodPlan`, evidence index, temporal availability, and limitations without editing them. The `reportScaffold` field `calculationDigest` must equal the returned `calculationDigest` exactly; `preparedContextDigest` is a separate validator input and must never be copied into the report.\n4. **read_complete_method_pack** Read the complete packaged method pack [from its first heading through every `**End method card:**` marker](references/method-pack.md). Follow the prepared `methodPlan` order and statuses exactly: execute only `active` cards and preserve every `unavailable` or `disputed` card, prerequisite, obligation, and temporal layer as a limitation. Never use a partial reference or source narrative. Never use remembered traditional meanings.\n5. **draft_report_v2** Outside the Worker, draft `inner-lens.interpretation-report.v2` from the returned `reportScaffold` and [the active shared report contract](../../references/report-contract.md), using only active claim rules and evidence from the prepared context. Set `report.calculationDigest` to the exact prepared `calculationDigest`. Every exact entry in `reportScaffold.limitations` is required; additional schema-valid bounded limitations are allowed, and order is not semantic. Preserve unavailable or disputed methods and layers as limitations. The current manifest activates 1 of 8 `bazi` method cards (`bazi.method.strength-balancing.v1`): attempt a real interpretation with it. For every `active` card in the prepared `methodPlan`, emit a material block only where that card's own reviewed claim rule and the prepared evidence index genuinely support one, citing the exact `evidenceId`, `factPath`, `canonicalIds`, `methodCardId`, `claimRuleId`, `temporalLayer`, and `provenanceRef` the prepared context returned, with real supporting and counter evidence. Where an active card's claim rule is not satisfied by the prepared evidence, keep that obligation an explicit limitation instead of a block -- exactly as for the remaining 7 `bazi` cards the manifest does not activate and every temporal layer the prepared context reports as unavailable. Never fabricate a material claim, timeline, scenario, or recommendation to fill the schema.\n6. **validate_interpretation_report** Retain both returned digests. Call `validate_interpretation_report` with the exact current-conversation `canonicalResult`, the same optional exact `temporalResult`, the same `readingContract`, and the returned `preparedContextDigest` exactly as `preparedContextDigest`; never substitute `calculationDigest`. Pass the candidate `report` and `attempt: 1`. If it returns `repair-once`, apply only its static errors to the same report once and call the validator exactly once with `attempt: 2`; the maximum is one repair. Never resend `attempt: 1`, never create `attempt: 3`, never replace the report with remembered prose, and never bypass the validator.\n7. **render_widget** Stop after the validator result. The attached report widget renders automatically, using only a returned `validatedReport` or the attempt-two facts-only `fallback`. Never render an invalid draft or summarize claims absent from `validatedReport`. Never substitute a chart or export tool for this report widget.\n\nMethod school boundary: Resolve method selection from the reading contract before loading cards. When no supported override is explicit, select `bazi.school.strength-balancing.v1` -- the one Bazi school whose method card the current manifest activates. That default follows activation state only; it resolves nothing in the unresolved `bazi.dispute.useful-god-concepts` and never overrules another position. When `bazi.school.ziping-structure.v1` or `bazi.school.climate-adjustment.v1` is explicit, select exactly that profile for this turn; the current manifest activates no card in either, so that turn keeps their obligations explicit limitations. Reject any other override as unavailable. Selection changes only the method pack, never returned calculation facts, and profiles never mix.\n\nKeep structure, strength balancing, climate adjustment, and bridging as separate unresolved positions. The selected profile cannot silently activate another lens; bridging has no executable pack and remains unavailable.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}