# TEMPLATE ONLY -- not read by anything. Copy this file's SHAPE, never its # content, into a real knowledge/catalogue.yaml if the owner gives you one. # # This is what `knowledge/catalogue.yaml` looks like: the "published" layer, # meant to hold manufacturer data and trade-standard vocabulary that is the # same for everyone -- no client, job or plant name belongs in it either. # This particular distribution ships with NO catalogue at all (see # tools/make_dist.py), so every value below is a placeholder and every # section is a skeleton. Do not fill this file in and expect the tools to # read it -- see knowledge/README.md for how to get the real one. # # knowledge._merge_file() treats this file's absence as ordinary: nothing # crashes without it, but a few things stand down -- # # * knowledge.load() falls back to knowledge.DEFAULTS for anything this # file would have overridden -- silent, unremarkable, by design. # * vibe.ticketpage's master shop-ticket checklist (the `checklist.master` # key below) is read from THIS file, and is the one thing that does NOT # degrade quietly if the file is present but broken -- see the comment # above `CHECKLIST_ITEMS` in lib/vibe/ticketpage.py. With no file at # all (this distribution's state) it reports a clear, named reason # instead of a checklist that looks like everything passed. # ============================================================== face_designations # The vocabulary a ticket uses for "which face of the piece" -- near/far # (measured from the viewing direction) vs. top/bottom-in-form (measured # from the casting bed). Trade abbreviations, not client data. face_designations: frames: [] # e.g. [near_far, top_bottom_in_form] vocabularies: {} # SAMPLE_VOCAB_ID: # frame: near_far # measured_from: 'the direction the view looks' # tokens: # - {token: 'N.F.', means: 'near face', side: near} # - {token: 'F.F.', means: 'far face', side: far} # ==================================================================== orientation # How a plant's model expresses which way a piece is turned. Shape only -- # every value a real file carries under here is plant knowledge, never here. orientation: {} # ====================================================================== catalogue # Manufacturer ratings: lifting inserts, rebar stock lengths, and the safety # factors that came with them from a published source. Every real entry # carries a `source:` citation (catalogue page, date) because a rating with # no citation is not verifiable by the next person who reads it. catalogue: safety_factors: tension_fos: null shear_fos: null unknown_because: 'no trade-wide factor to publish -- see a real file for why' inserts: {} # SAMPLE_INSERT_PART_NUMBER: # working_load_lb: 0 # shear_load_lb: 0 # ultimate_tension_lb: 0 # min_edge_distance_in: 0 # safety_factors: # tension_fos: 0.0 # shear_fos: 0.0 # source: ', , -- ' # basis_fc_psi: 0 # basis_pcf: 0 rebar: stock_length_ft: null stock_by_size: {} stock_exempt_marks: [] # ===================================================================== connectors # Sandwich-wall wythe-tie products: manufacturer, designation, and every # published capacity. Same discipline as `catalogue.inserts` -- a `source:` # per entry, an ultimate kept separate from a working load when the vendor # never published one. connectors: what_it_is: 'the part that crosses a sandwich panel and ties its wythes together' products: {} # 'SAMPLE Manufacturer (SAMPLE-DESIGNATION)': # manufacturer: 'SAMPLE Manufacturer' # designation: SAMPLE-DESIGNATION # tie_length_in: 0.0 # ultimate_tensile_pullout_lb: 0 # capacity_lb: null # capacity_unknown_because: 'vendor publishes no working load or factor' # ====================================================================== checklist # The master shop-ticket checklist: what exists, how each row is worded, and # what grade (A/B/C/D) it carries. Same at every plant -- a plant selects # and mutes from here, never redefines a row. See `MASTER_KEY` in # lib/vibe/ticketpage.py for exactly how this is read, and its own comment # for why a file that is PRESENT but broken refuses loudly rather than # quietly running a shorter checklist. checklist: master: [] # - id: '1.1' # name: 'Sheet name equals the piece mark' # grade: 'A' # owner_codes: ['SAMPLE-CODE'] # not_run_reason: null # checks: 'check_sample_thing' # a function name in ticketchecks.py