code wiki / _hdl_build / nx_meal_skills_page.nx
nx_meal_skills_page.nx
buildroot/runtime/_hdl_build/nx_meal_skills_page.nx
about
nx_meal_skills_page.nx -- the SKILLS surface: what a dish actually asks of you, what it would cost to skip,
and who you can learn each technique from.
It is a separate emitter from nx_meal_page on purpose (rule 9). The recipe page answers "what does this cost
and where did it come from"; this one answers "can I do it, how long will it take ME, and should I even try
tonight". Bolting both into one render would have meant editing a surface that is already 9/9 gate-proven.
It composes four existing engines and adds none: nx_meal_effort (skill tree, per-cook time, make-vs-buy),
nx_coach_curriculum_lib (the technique checklists -- the SAME engine that coaches NVC), nx_skill_video (who
you learn from), and nx_nishi_editorial (the design system).
WHAT IT REFUSES TO SAY, and each refusal is inherited rather than re-invented:
- a step whose skill we have never assessed shows UNMEASURED, and is excluded from the total
- if an hour of this household's time is unpriced, the ledger says so instead of ranking on invented money
- an option missing money or time is listed and NOT ranked
- a video source claims a preserved copy only when its bytes come back out of the WARC
- the request button renders only when the intake is actually listening
license_tier: ORIGINAL No hw writes (Rule 26).
dependencies 6 imports · 1 importers
imports: nx_nishi_editorial.nxnx_meal_effort.nxnx_skill_video.nxnx_coach_curriculum_lib.nxnx_meal_plan.nxnx_syscalls.nx
imported by: nx_skills_emit.nx
structs
| none |
consts
| 26 | const MSP_FLD: i64 = 1024 |
| 27 | const MSP_BIG: i64 = 4096 |
| 28 | const MSP_MAX: i64 = 64 |
functions
| 31 | func msp_mins(out: *u8, off: i64, seconds: i64) -> i64 |
| 36 | func msp_level_name(level: i64) -> *u8 called by 1: msp_step |
| 46 | func msp_step(out: *u8, off: i64, prefix: *u8, unit: *u8, rid: *u8, idx: i64) -> i64 |
| 83 | func msp_checklist(out: *u8, off: i64, h: *i64, sid: *u8, label: *u8) -> i64 |
| 118 | func msp_sources(out: *u8, off: i64, vp: *u8, sid: *u8, warc: *u8, warclen: i64) -> i64 |
| 156 | func msp_render(out: *u8, prefix: *u8, vp: *u8, currprefix: *u8, unit: *u8, rid: *u8, warc: *u8, warclen: i64, scratch_money: i64, scratch_complete: i64, intake_live: i64, back: *u8) -> i64 |