feat(vedic): add P1 contracts and provider skeleton - #22
Merged
Conversation
…wired) Reserve the vedic system across the contracts without implementing any calculation: ChartSystem/EngineSystem/EvidenceKind gain vedic (+vedic-rule) slots, ChartBundle gains an optional vedic slot, and VedicSettings/VedicChartResult are exported from @ming/contracts. The two unresolved owner decisions stay unresolved by construction: nodes and dashaYear are optional enums with NO defaults (ADR 0013 Open questions 1-2; P3 dasha remains BLOCKED), and no sunrise field exists at all. Default systems stay ['western','bazi','ziwei']; old inputs parse unchanged. New packages @ming/vedic and @ming/vedic-rules are skeletons: computeVedic always returns null + a structured SYSTEM_NOT_YET_IMPLEMENTED warning (never a fabricated result/provider/ruleset), and calculate() dispatches explicit systems:['vedic'] through it. interpret, PublicResult/AnswerPlan v1 (three-system, .length(3)) and the CLI --systems all expansion are untouched (P4/P5); ENGINE_VERSION unchanged (P6). No new runtime deps: pnpm-lock.yaml gains only two workspace importer entries; SBOM package set and Western goldens are byte-identical to main; engine.mjs rebuilt (double-build drift: none). Tests +12/+3 files (contracts acceptance + no hidden defaults, provider honesty, dispatch/provenance, v1 public-contract pinning, CLI-all guard); one pre-existing flaky test (built-engine import) given an explicit 30s timeout, assertions unchanged. Doc counts updated from a real run (704 tests / 38 files).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Reserve the fourth first-class system id (
vedic) across all engine contracts and wire aprovider skeleton that computes nothing: explicit
systems: ['vedic']requests alwaysreturn
nullplus a single structuredSYSTEM_NOT_YET_IMPLEMENTEDwarning — no grahapositions, no Lagna, no panchanga, no dasha dates, no fabricated provider/ruleset provenance.
What stays unchanged
systemsarray:['western', 'bazi', 'ziwei'](vedic is opt-in only).PublicResult/AnswerPlanv1 contracts (three-system,.length(3)).--systems allexpansion (still three systems; P5 owns the flip).ENGINE_VERSION(unchanged; P6 owns the bump to 0.3.0).ADR 0013 semantic defaults: still Proposed / BLOCKED
mean: proposed, owner confirmation pending (Open question 1).julian-365.25.P3 dasha implementation gated on this decision plus a same-model dual-implementation
cross-check. The
dashaYearenum is reserved inVedicSettingsbut no value is wiredas a default anywhere.
P2 verification evidence before any Vaara output ships.
Dependency / supply-chain boundary
pnpm-lock.yamlgains only two workspace importer entries.been introduced into the repo, lockfile, bundle, SBOM or CI.
sbom.cdx.json/sbom.spdx.json) is byte-identical to main.Verification (local, all green)
pnpm install --frozen-lockfilepasses (lockfile is the committed version).pnpm run verify:cloud— 19 stages green: format, lint, typecheck, 704 tests / 38 files,build, validate:provenance, validate:skill 40/40, validate:reading 53/53, validate:docs
134/134, smoke, forward:test, package:hosts, verify:hosts, verify:install 106/106,
check:doc-counts 12/12, scan:deps 0 advisories, scan:licenses 20/20, validate:sbom 96/96,
scan:secrets.
pnpm run buildx2: engine.mjs / sbom.cdx / sbom.spdx SHA-256 zero drift.git diff --checkclean.Explicitly out of scope
No tag, no GitHub Release, no published assets, no manifest promotion.