[2026-07-24 Fri]
Den användarvänliga vägen till Budget Doctor är:
larin doctor
larin budget doctorBåda formerna kör samma Budget Doctor. larin budget utan underkommando behåller sin
tidigare betydelse och visar budgetstatus.
Klienten visar samma versionsmärkta JSON-rapport som Emacs och
bevarar motorns exitkod. För installationskontroll och motornära
felsökning används ledgerctl doctor och
ledgerctl budget doctor.
ledgerctl har två kontroller med olika
djup:
| Kommando | Omfattning |
|---|---|
ledgerctl doctor |
Installation, PATH, grundfiler, körbara skript och enkel integration |
ledgerctl budget doctor |
Full skrivskyddad kontroll av budgetkonfiguration, journalformat, hLedger och invariant |
Båda diagnostiserar. De reparerar inte filer automatiskt.
ledgerctl doctorDen visar vilken kodinstallation, arbetsyta och konfigurationsfil som faktiskt används och kontrollerar bland annat:
make finns,hledger > 1.50.4 och < 2.0=,routes.conf, imports/ och finance.journal finns,Exitstatus är 0 när alla obligatoriska kontroller passerar och 1 när minst ett fel hittas.
ledgerctl budget doctorMaskinläsbart:
ledgerctl budget doctor --format jsonBudget Doctor samlar alla oberoende fel i en körning och kontrollerar:
ledgerctl.conf,envelopes.conf,Att kategorisera
finns och har rätt konto,auto.journal exakt motsvarar
konfigurationen,all.journal har kanonisk
include-layout,funding.journal,Exitstatus 1 betyder att rapporten innehåller minst ett health-check-fel. Det är fortfarande en giltig rapport, inte nödvändigtvis att Doctor själv kraschade. Emacs UI behandlar därför exitkod 0 och 1 som visningsbara resultat.
När ett fel ser orimligt ut:
pwd
ledgerctl config show
ledgerctl config pathEtt vanligt problem är att ledgerctl
har hittat en annan ledgerctl.conf högre
upp i katalogträdet eller via LEDGERCTL_CONFIG.
För att tvinga en viss arbetsyta i ett enskilt kommando:
LEDGERCTL_CONFIG=/home/jonix/budget/ledgerctl.conf ledgerctl doctorpython3 finns inte eller för gammal versionKontrollera:
command -v python3
python3 --versionI en Guix-miljö måste rätt profil vara aktiv i samma shell där ledgerctl körs.
make finns intecommand -v make
ledgerctl config showKonfigurationen kan peka MAKE till ett
annat kommandonamn.
Importens enklaste parsning kan fortfarande nå delar av motorn, men
report, reconcile och budgetfunktionerna kräver en stödd
hLedger-version. Larin kräver hledger >
1.50.4= och < 2.0.
command -v hledger
hledger --versionKontrollera även om HLEDGER i ledgerctl.conf pekar på fel binär.
ledgerctl initinit skapar endast saknade filer och
ska inte skriva över en befintlig journal.
Det påverkar framför allt add,
display-namn och suggest-routes.
För en ny arbetsyta:
ledgerctl init --with-seedFör en avsiktligt tom databas:
cat > merchant-db.json <<'JSON'
{"schema_version": 2, "merchants": {}}
JSONKör testsviten från projektets rot:
bash parse-engine/tests/runKontrollera därefter aktuell Git-status och Python-miljö. Doctor testar syntax och importbarhet men ersätter inte regressionstesterna.
BUDGET_ENABLED inte är 1Kontrollera:
ledgerctl config showOm budgetlagret ska vara aktivt, kör normalt:
ledgerctl budget initUndvik att endast sätta flaggan för hand utan att säkerställa all.journal och budgetfilerna.
ledgerctl budget regen-auto
ledgerctl budget doctorGör detta först efter att envelopes.conf är validerad. regen-auto ska vara den enda normala vägen att
ändra auto.journal.
Den kanoniska layouten är i princip:
include finance.journal
include budget/auto.journal
include budget/funding.journal
Låt ledgerctl budget init --force
regenerera genererade filer, men ta först en backup och granska
kommandots utskrift. Fundinghistoriken ska bevaras.
Det är ett maskinprotokoll, inte bara fri hLedger-syntax. Återställ senaste korrekta version från Git, backup eller ett verifierat arkivsnapshot. Försök inte göra validatorn nöjd genom improviserad manuell redigering.
Kör den snabba kontrollen:
ledgerctl budget coverage --scope routesFör enstaka konton kan felrapportens exempel användas direkt med
larin envelope update eller larin envelope add. För flera kategorier:
ledgerctl suggest-envelopesImporten har stannat före CSV-konvertering och har inte ändrat journalerna. Kör coverage igen innan du startar om importen.
ledgerctl budget coverage --scope allFör ett manuellt köp använder du C i
Emacs och omklassificerar posten. Om merchantens standardkonto är fel
uppdateras det separat med u i
Emacs-administrationen. mirror är inte en
reparation för otäckta utgifter.
Lägg till det genom Envelope API:t:
larin envelope add \
--label "Att kategorisera" \
--id uncategorized \
--account expenses:uncategorizedKör därefter ledgerctl budget coverage --scope all och larin doctor.
Kör:
ledgerctl budget check
ledgerctl budget statusVanliga orsaker:
Vid en korrekt off-budget-överföring används budget mirror efter granskning.
Budgeten är konfigurerad för exempelvis SEK men journalen innehåller även EUR. Det behöver inte vara ett fel, men kontrollera att beloppen inte blandas utan avsedd omräkning. Doctor accepterar varningar men redovisar dem.
När terminalklienten visar ett kontraktsfel:
--workspace,ledgerctl
används,--format json,schema_version, revision och
felobjekt,Exempel:
larin --workspace ~/budget status --month 2026-07
ledgerctl budget status --month 2026-07 --format jsonLarin CLI ska stoppa vid ett okänt eller felaktigt kontrakt i stället för att gissa. Det skyddar mot att en UI-bugg döljer ett verkligt dataproblem.
Larin låter dessutom ledgerctl workspace locate --format json hitta
och validera arbetsytan. Efter det installeras ett runtime-skydd som
blockerar direkt filåtkomst i arbetsytan och godtyckliga subprocesser.
Ett sådant fel betyder att Larin-konsumenten försökt bryta JSON-gränsen
och ska rättas i kod, inte kringgås i arbetsytan.
I budgetpanelen:
! öppnar Budget Doctor,D visar rå stdout, JSON och
stderr,g kör kontrollen eller vyn igen.När ett UI-fel är oklart, kopiera först det exakta kommandot från diagnostiken och kör det i terminalen från samma arbetsyta. Då skiljer du ett backendfel från ett renderings- eller Emacsproblem.
Grundkontroll:
ledgerctl doctor
bash parse-engine/tests/runBudget, CLI och Emacs:
ledgerctl budget doctor
consumers/cli/run-tests.sh
consumers/emacs/run-tests.sh
# Samlad acceptans, inklusive containerdemo:
./full-test-run.shKör också de körbara use casen när hLedger finns:
examples/envelope-budget-use-case/run-all.sh