A deterministic MoonBit phase-aware planning window scorer for lunar rhythm signals, rule scoring, best-window selection, and iCalendar export.
moon fmt --check
moon check --deny-warn
moon build
moon test
moon run cmd/main
moon run examples/partialLunemark lunar rhythm for 2026-08-24
phase: ...
lane: night-sky observation
score: .../100
signature: LNR-...import {
"DZX-ai-nb/lunemark" @lunemark,
}
pkgtype(kind: "executable")let day = @lunemark.date(2026, 9, 7)
let report = @lunemark.analyze_day(day, @lunemark.DeepWork)
println(@lunemark.rhythm_badge(report))let phase = @lunemark.phase_on(day)
let light = @lunemark.illumination_on(day)
println(phase.label() + " " + light.to_string())let windows = @lunemark.best_windows(day, 14, @lunemark.NightSky, 3)
for item in windows {
println(@lunemark.format_date(item.date) + " " + item.phase.label())
}let ics = @lunemark.export_ics("Night sky window", day, 30, @lunemark.NightSky)
println(ics)let ics = @lunemark.export_ics_with_threshold(
"Event timing window",
day,
30,
@lunemark.EventTiming,
80,
)
println(ics)moon testpub(all) struct DayRhythm {
date : CivilDate
phase : MoonPhase
lunar_day : Int
illumination : Int
lane : RhythmLane
score : Int
tide_bias : String
advice : Array[String]
rules : Array[RhythmRule]
signature : String
} derive(Eq, Debug)pub(all) struct RhythmRule {
id : String
month : Int
phase : MoonPhase
lane : RhythmLane
weight : Int
label : String
} derive(Eq, Debug)fn days_in_month(year : Int, month : Int) -> Intfn export_ics_with_threshold(title : String, start : CivilDate, days : Int, lane : RhythmLane, minimum_score : Int) -> Stringfn is_leap_year(year : Int) -> BoolInstall
Download zipA deterministic MoonBit phase-aware planning window scorer for lunar rhythm signals, rule scoring, best-window selection, and iCalendar export.