nx_prodready.nx
buildroot/runtime/nx_prodready.nx
about
nx_prodready.nx -- GTM SUITE / PRODUCTION-READINESS ENGINE. The capstone
that recombinates every earlier rung into ONE answer: given a product
concept, what is blocking it from market, in the order that actually kills
products. This is the "help us get a plan on what we need to do" the
operator asked for, made mechanical.
THE ORDERING IS THE INSIGHT. Readiness is not a checklist you can do in
any order -- the dimensions have a kill-order, and reporting them out of
order wastes effort. A legally-impossible product needs no formulation
work; a product that cannot fit a dosage form needs no cost model; a
product that cannot clear a margin needs no cGMP audit yet. So pr_first_gap
walks the dimensions in the order that a product dies, and returns the FIRST
blocker -- the one thing to fix next -- rather than a flat list that invites
working on rung 6 while rung 1 is still broken.
1. LEGAL every ingredient sellable in the target market
2. FORMAT the clinical doses fit a saleable dosage form
3. ECONOMICS the price clears the target margin
4. IDENTITY 21 CFR 111 100% identity testing is in place
5. MANUFACTURING an EU-GMP / cGMP facility is qualified
6. CLAIMS the marketing claims are reviewed + compliant
7. COA a certificate of analysis is on file per lot
1-3 are COMPUTED from the earlier libraries (ingredient class, jurisdiction,
formulation, economics). 4-7 are OPERATOR ATTESTATIONS -- things a person
must actually do, which the engine cannot verify itself and therefore does
not pretend to; it tracks whether they are declared done, and refuses to
call a product ready while any is open.
The readiness score is the fraction of dimensions passed, per-mil -- a
progress bar toward market, not a marketing number.
Grounding: composes nx_supp_ingredient (class) + nx_supp_jurisdiction
(market pathway) + nx_supp_formula (format + economics) + nx_supp_claims
+ the 21 CFR 111 identity-testing requirement nx_qc_svc serves.
genealogy_id: supplement_gtm + service_infrastructure
dependencies 4 imports · 1 importers
imports: nx_syscalls.nxnx_supp_ingredient.nxnx_supp_formula.nxnx_supp_jurisdiction.nx
imported by: nx_plan_svc.nx
structs
| 85 | struct NxProduct |
consts
| 46 | const PR_LEGAL: i64 = 0 |
| 47 | const PR_FORMAT: i64 = 1 |
| 48 | const PR_ECONOMICS: i64 = 2 |
| 49 | const PR_IDENTITY: i64 = 3 |
| 50 | const PR_MANUFACTURING: i64 = 4 |
| 51 | const PR_CLAIMS: i64 = 5 |
| 52 | const PR_COA: i64 = 6 |
| 53 | const PR_N_DIM: i64 = 7 |
| 55 | const PR_READY: i64 = 0 - 1 // pr_first_gap returns this when nothing blocks |
functions
| 57 | func pr_dim_name(d: i64) -> *u8 called by 1: plan_assess |
| 69 | func pr_action(d: i64) -> *u8 called by 1: plan_assess |
| 99 | func nx_product_new() -> *NxProduct |
| 115 | func pr_add_ingredient(p: *NxProduct, id: i64) -> i64 calls 1: si_valid_id |
| 122 | func pr_has_ingredient(p: *NxProduct, id: i64) -> i64 |
| 132 | func pr_build_formula(p: *NxProduct) -> *NxSuppFormula called by 2: pr_format_okpr_economics_ok calls 3: nx_supp_formula_newpr_has_ingredientsf_set_clinical |
| 146 | func pr_legal_ok(p: *NxProduct) -> i64 |
| 160 | func pr_first_unlawful(p: *NxProduct) -> i64 |
| 175 | func pr_format_ok(p: *NxProduct) -> i64 |
| 183 | func pr_economics_ok(p: *NxProduct) -> i64 |
| 194 | func pr_dim_ok(p: *NxProduct, d: i64) -> i64 |
| 209 | func pr_first_gap(p: *NxProduct) -> i64 |
| 222 | func pr_dims_passed(p: *NxProduct) -> i64 |
| 232 | func pr_readiness_permil(p: *NxProduct) -> i64 |
| 237 | func pr_is_production_ready(p: *NxProduct) -> i64 |
| 245 | func pr_open_attestations(p: *NxProduct) -> i64 |
| 255 | func pr_open_computed_blockers(p: *NxProduct) -> i64 |