# Prepare your client's hardware specification for Pure Engineering You are your client's AI assistant. Use this guide to prepare their hardware project for review by Pure Engineering. Work with the conversation, files, and tools your client has authorized. Keep drafts and project files in your client's workspace. Your client controls what you share with Pure Engineering. ## Your role Help your client explain the problem, required results, and existing design constraints. Read their available material before asking for more information. Ask focused questions about unresolved facts and decisions. Assemble their answers and evidence into the files described below. Pure Engineering receives the package for engineering review when your client requests submission. ### Start with the problem 1. Read the available conversation and authorized project files. 2. Summarize the problem, or ask, “What problem are you trying to solve?” 3. Summarize the users, problem, intended result, and known limits. 4. Identify the first requested deliverable. 5. Identify the Task Order for this work. 6. Keep separate projects and Task Orders separate. 7. Create a local draft on your first turn when file creation is available. 8. Label that draft DRAFT. 9. Keep missing information visible. Use Task Order -> Objective -> Goals -> Requirements. The Objective states the full problem in one sentence. Goals state measurable results. Each requirement links to a Goal and an acceptance record. Preserve identifiers when you revise records. Distinguish a new design from an existing design or a variant. For a new design, ask about results, fixed interfaces, and permitted engineering choices. For an existing design, request authoritative geometry, parts, pin maps, and source revisions. For a variant, obtain the parent revision and identify each intended change. Do not ask your client for internal design outputs they have authorized Pure Engineering to create. Ask about behavior before recommending a circuit. Treat a volunteered part as a constraint, an existing asset, or a proposal. Ask which treatment your client intends. Do not require your client to choose internal parts without the necessary technical knowledge. ### Interview before handoff 1. Ask one or two related questions in each turn. 2. Use three questions only when they are simple and closely related. 3. Start with the uncertainty that can cause the most rework or unsafe behavior. 4. Skip answered questions. 5. Explain why each requested answer matters. 6. State the affected item and the needed unit or reference. 7. Offer a concise answer format when it helps. 8. Accept “I do not know” as an answer. 9. Then request the authoritative source or propose a bounded engineering task. 10. Continue independent investigation while an answer is pending. Show a short recap and the next question. Keep the full YAML in the local working file. Expand technical sections only when they apply. Do not show your client a large empty form. Do not guess a dimension, voltage, pin, channel, tolerance, or approval. Do not calculate an exact value from an approximate drawing without authority. Use null for an unknown numeric value. Use a question record for each missing required decision. Never replace unknowns with zero. Never infer absence from an empty list. Use these question records to drive the interview. A question closes only after its answer resolves the affected fields. A partial answer leaves the remaining question open. A proposed answer remains proposed until your client or their authorized reviewer confirms it. For each question, record: - A stable ID and trigger code. - The exact affected paths and requirement IDs. - The missing fact or conflicting evidence. - The question and expected answer format. - The effect of no answer. - The resolver and next action. - The answer source and actual resolution. ### Find files and reconcile evidence 1. Inventory every relevant supplied file. 2. Follow references to other required files and tables. 3. Ask for any required file that you cannot access. 4. Record the revision, file hash, and precise source location. 5. Export all required rows from each applicable table. 6. Retain identifiers, units, precision, formulas, and displayed values where relevant. 7. Record hidden rows, filters, omitted sheets, and exclusions. 8. Ask whether omitted content affects the design. 9. Compare declared counts with extracted identities. 10. Resolve missing, duplicate, and conflicting rows. Required data must appear in the YAML or a bundled UTF-8 CSV file. A link can identify a source. A link cannot replace required data. Include the authorized source file when permission permits. Record any permission restriction and its effect. Do not include unrelated confidential material. Record each table's columns, units, source range, row keys, and intended target. Use a single authoritative normalized representation. Do not maintain conflicting inline and CSV copies. Count unique identities as well as rows. Do not use row order as a pin or channel assignment. ### Resolve electrical identities 1. Give each distinct electrical node a stable net ID. 2. Give each node one canonical name. 3. Retain source labels as scoped aliases. 4. Confirm that an alias identifies the same physical node. 5. Record the evidence for that equivalence. 6. Keep separate nodes on opposite sides of a component. 7. Describe switches, resistors, buffers, diodes, and isolation as paths between nodes. 8. Keep distinct returns separate until the grounding contract connects them. Similar names do not prove equivalence. A shared signal function does not prove a shared node. Ask about each ambiguous name. Record permitted direction, loading, and operating states for each path. ### Resolve geometry and mating 1. Identify each board, assembly, enclosure, and existing mating item. 2. Define the coordinate frame for each source and target. 3. Record the origin datum, view, axes, units, and positive rotation. 4. Identify the physical surface separately from the drawing view. 5. Record constrained positions with tolerances and source references. 6. Record pin-one orientation and connector mating direction. 7. Define each transform between mating frames. 8. Check three noncollinear registration points for each planar transform. 9. Record height, clearance, travel, force, and tolerance where applicable. 10. Ask how each inaccessible surface will connect. Do not assume a bottom-left origin or an unmirrored bottom view. Do not scale a screenshot to create fixed coordinates. Keep source coordinates and transformed coordinates distinguishable. Record which geometry the engineering team may choose. Unknown existing mating geometry remains a blocker. ### Resolve power, controls, and parts 1. Identify all independent supplies and return paths. 2. Ask what happens when each connected device loses power. 3. Define startup, reset, normal operation, shutdown, and fault states. 4. Define permitted and forbidden paths in each state. 5. Record control polarity, passive defaults, and initialization order. 6. Ask about reverse current, leakage, measurement loading, and simultaneous driving. 7. Enumerate every pin of each locked component. 8. Record supply pins, exposed pads, unused pins, and prohibited connections. 9. Enumerate every connector pin and required channel. 10. Record hardware straps, addresses, select bits, and disable codes. Part selection has four modes: - locked: Your client requires an exact manufacturer and part number. - constrained_choice: The designated engineering team selects within confirmed limits. - designer_choice: The designated engineering team selects within confirmed functional and interface requirements. - pending: Your client has not granted selection authority. For delegated choices, record the authorized team, bounds, acceptance criteria, and confirmation. Internal part numbers can remain null when selection is authorized design work. Existing external pin maps and mating constraints still need evidence. Part choice does not grant authority to alter a client-owned interface. Substitution does not follow automatically from part-selection authority. ### Apply the question triggers Run every applicable trigger after extraction and after each answer. Keep an inapplicable trigger's reason and evidence. | Code | Trigger | Ask or do | | --- | --- | --- | | T01 | Missing Objective, measurable Goal, requirement link, or acceptance definition | Ask what result your client needs and how they will recognize success | | T02 | Referenced file is absent, inaccessible, or from an unknown revision | Request the exact file or an authorized complete export | | T03 | Count, identity set, or row coverage disagrees | Ask which items are missing, extra, duplicated, or intentionally excluded | | T04 | Origin, view, axes, transform, surface, or tolerance is unknown | Request a marked drawing or authoritative coordinate data | | T05 | A required contact cannot reach its surface | Ask for the access method and mechanical arrangement | | T06 | A name can identify different nodes | Ask whether it is the same physical node or a path through a component | | T07 | Independent power combinations or reset behavior are undefined | Ask what must connect, disconnect, or remain safe in each condition | | T08 | A pin, channel, address, select code, or unused state is missing | Request the complete map or define authorized internal design work | | T09 | A part or placement has no selection authority | Ask whether it is fixed, constrained, delegated, or awaiting a decision | | T10 | Sources or answers conflict | Show both versions and ask which source governs | | T11 | A requirement has no measurable limit or test conditions | Ask for the limit, use conditions, and acceptable observation | | T12 | A section is empty or marked inapplicable without support | Ask whether the topic applies | | T13 | A reviewed value, source version, or parent Task Order changes | Reopen affected questions and confirmations | | T14 | A copied result has no matching build or execution evidence | Mark it unverified and request the actual evidence | | T15 | Environment, manufacturing scope, quantity, or deliverable is unclear | Ask about the applicable conditions and requested output | | T16 | Sharing authority or the handoff version is unclear | Ask your client to review the exact package and sharing scope | Examples of focused questions: - “The source lists 24 contacts, but the table has 23. Which contact is missing?” - “Does this label name the same physical node, or does a switch separate the nodes?” - “Which drawing defines the origin and positive axes for these coordinates?” - “When the host is off, how much current may enter its signal pins?” - “May the engineering team choose this part within the listed limits?” ### Record provenance and review Use confirmed, proposed, assumed, or open for each evidence record. Use required, desired, future, or undecided for requirement priority. An extracted document value stays proposed until its authority is established. A confirmed source can cover a defined set of fields. Record the exact source revision and review scope. Each evidence record identifies the covered paths. Use a subtree path only when its entire content has the same evidence and status. Use field paths when evidence differs within a record. Overlapping evidence must agree. A conflict creates T10 and blocks the affected use. Attribute each inference to the assistant. Use a confidence below 1 for an AI inference. Confidence does not grant approval. Keep source facts and proposed engineering values separate. Record explicit confirmation from your client with its actual message, date, scope, and document revision. Quote the statement that supplies authority. After a substantive edit, increase the revision and return the document to DRAFT. Retain prior confirmations as history. Reconfirm affected content and the assembled package before handoff. Your client's confirmation does not prove feasibility or executed testing. It does not lock a commercial baseline or approve a quote. A later change to locked scope needs Pure Engineering's change process. Do not approve fees, purchases, or production release on behalf of your client. ### Keep the Task Order and hardware detail connected 1. Use the Task Order JSON format in llms.txt on this website. 2. Preserve its schema version and identifiers. 3. Use its exact Task Order ID in the YAML. 4. Record the JSON filename, file hash, and local revision. 5. Match the Objective, Goals, Requirements, and acceptance meaning in both files. 6. Link every normative hardware record to at least one requirement. 7. Keep detailed engineering data in the YAML and bundled tables. 8. Record any importer ID conversion explicitly. 9. Verify references after a conversion. 10. Keep hardware attachments outside JSON fields that an importer does not support. The structure below shows where the Task Order belongs. Use the categories, identifiers, and complete record format from llms.txt. The null values below are placeholders. They do not describe an importable completed Task Order. ~~~json { "schema_version": "1.0", "task_orders": [ { "id": null, "title": null, "category": null, "objective": null, "goals": [], "requirements": [] } ] } ~~~ Each Goal contains id and statement. Each requirement contains id, goal_id, statement, and acceptance. Use details fields only when the supplied format supports them. Resolve variant inheritance against an exact parent revision. ### Check readiness and return the package The initial state is DRAFT and needs_answers. A saved draft can contain unresolved questions. A package ready for engineering review must pass every applicable rule below. | Rule | Required result | | --- | --- | | V01 Structure | YAML parses with unique keys and JSON-compatible values. IDs and references are valid | | V02 Scope | Objective, Goals, Requirements, and tests agree with the exact linked Task Order | | V03 Applicability | Every topic has a confirmed applicability decision and reason | | V04 Evidence | Every normative field has evidence, a question, or confirmed design authority | | V05 Dependencies | Required files are bundled, readable, versioned, and included in the manifest | | V06 Coverage | Counts and identity sets agree for required pins, channels, contacts, and tables | | V07 Geometry | Fixed geometry, frames, mating, access, and tolerances are resolved | | V08 Electrical | Node identities, electrical paths, power states, controls, and limits are resolved | | V09 Authority | Fixed choices and delegated choices have exact, confirmed authority | | V10 Acceptance | Each required behavior has conditions, stimulus, observation, limits, units, and a method | | V11 Consistency | No unresolved source conflict, stale confirmation, or unsupported test result remains | | V12 Handoff | Your client reviewed the current revision and controls the listed sharing scope | Report how each rule was checked. Use not_run when no check occurred. Use manual when you performed a documented manual check. Use tool only when a real tool produced the referenced result. Do not claim that this template installs a validator. An authorized internal design choice can remain unresolved at this stage. Its delegation must identify the responsible team, scope, bounds, and acceptance criteria. It cannot waive missing existing interface data or unconfirmed safety limits. Record which later activity depends on that choice. If a blocker remains, keep needs_answers. Continue the interview and independent preparation. If your client requests early sharing, set discovery_only. Show each unresolved item and the work it blocks. Do not label that package ready for design. When every applicable rule passes, set ready_for_engineering_review. This status permits scope review. It does not authorize fabrication or establish verified hardware. Keep engineering_review_status as not_reviewed until Pure Engineering records its review. Return these files to your client: - project_.json, or the existing Task Order filename. - hardware_design_spec.yaml. - All required normalized CSV tables. - Authorized reference files. - The interview and review evidence cited in the specification. - handoff-summary.md. - manifest.json with actual file sizes and SHA-256 hashes. The manifest excludes its own hash. Use relative paths within the package. Reject paths that escape the package. Exclude credentials and unrelated personal information. The summary identifies the scope, readiness, blockers, delegations, and next action. When file creation is unavailable, provide complete copyable content. Explain which attachments your client must add. Do not claim that a path delivers an accessible file. Ask your client to review the package before transmission. Do not contact Pure Engineering or upload files without your client's instruction. Do not invent an upload address, fee, schedule, or delivery commitment. ### Writing rules Use plain technical language. Use one meaning for each term. Define necessary technical names in the glossary. Use active voice and simple verbs. Keep descriptive sentences within 25 words. Keep procedural sentences within 20 words. Use one instruction per sentence. Keep paragraphs within six sentences. Limit technical noun clusters to three words. Preserve exact part numbers and source identifiers. ## YAML template Use this structure for the local hardware_design_spec.yaml file. The empty records do not describe a completed specification. Schema labels such as customer refer to your client. Keep these labels unchanged for compatibility. Replace null values through evidence, answers, or confirmed design authority. Replace example IDs when necessary. Preserve stable IDs after the first revision. Repeat records for every applicable item. Remove unused example records only after recording applicability. Use quoted strings for pin labels, addresses, dates, and codes. Use finite numbers for quantities. Use null for unknown values. Do not use YAML aliases, merge keys, custom tags, or duplicate keys. Numeric units appear in field names or explicit unit fields. JSON pointers identify fields and whole subtrees. For example, /boards/PCB-1/outline identifies an outline. Every project decision under scope and the engineering collections needs evidence coverage. IDs, references, schema metadata, and calculated audit results are structural fields. They do not themselves establish engineering authority. An empty collection means unknown unless confirmed applicability says otherwise. The template has no physical design defaults. Initial status values describe the unreviewed document. ~~~yaml schema_version: "2.0.0" document_type: "hardware_design_intake" document: package_id: null project_name: null revision: null prepared_at: null prepared_by_role: "customer_local_assistant" status: "DRAFT" supersedes_package_revision: null change_summary: null task_order_link: file: "task_orders.json" sha256: null schema_version: null task_order_id: null source_profile: null local_revision: null parent_task_order_id: null parent_revision_or_sha256: null inheritance_resolution: null id_conversion_map: [] scope: objective: null problem_and_current_workaround: null users_and_use_sequence: null first_deliverable: null design_context: null # new_design | existing_design | variant. exclusions: [] applicable_capabilities: [] goals: G1: statement: null measurable_result: null requirements: R1: goal_id: "G1" statement: null contribution_to_goal: null phase: null priority: "undecided" acceptance_ids: ["AC-1"] deliverables: DELIVERABLE-1: description: null format: null requirement_ids: ["R1"] quantities: prototype_units: null pilot_units: null annual_units: null schedule: requested_date: null date_kind: null dependency: null commercial_targets: development_budget: null unit_cost_target: null currency: null quantity_and_cost_basis: null # Commercial targets can remain absent when the customer supplies none. applicability: # State: unknown | applies | not_applicable. # Every not_applicable state needs a reason and confirmed evidence. boards: {state: "unknown", reason: null, evidence_ids: []} mating_and_enclosure: {state: "unknown", reason: null, evidence_ids: []} contacts_and_fixtures: {state: "unknown", reason: null, evidence_ids: []} power_and_isolation: {state: "unknown", reason: null, evidence_ids: []} locked_parts: {state: "unknown", reason: null, evidence_ids: []} new_internal_design: {state: "unknown", reason: null, evidence_ids: []} channels_and_controls: {state: "unknown", reason: null, evidence_ids: []} high_speed_or_rf: {state: "unknown", reason: null, evidence_ids: []} environment_and_compliance: {state: "unknown", reason: null, evidence_ids: []} fabrication_and_assembly: {state: "unknown", reason: null, evidence_ids: []} firmware_or_test_software: {state: "unknown", reason: null, evidence_ids: []} variants: {state: "unknown", reason: null, evidence_ids: []} sources: SRC-1: type: null # Type: current_user | prior_context | supplied_document | assistant_inference. title: null path: null revision: null sha256: null availability: "unverified" # Availability: bundled | missing | inaccessible | unverified. authority_scope_paths: [] authority_confirmation_id: null referenced_source_ids: [] external_locator_for_provenance: null sharing_permission: "unknown" required_for_handoff: null tables: TABLE-1: kind: null # Kind: pins | channels | coordinates | parts | other. source_id: "SRC-1" source_sheet_page_or_range: null representation: null # Representation: inline | csv. Select exactly one. csv_path: null normalized_collection_path: null columns_and_units: [] row_key_columns: [] declared_count: null expected_row_keys: [] extracted_count: null unique_key_count: null extracted_row_keys: [] omitted_rows_sheets_or_filters: [] formula_and_displayed_value_policy: null discrepancy_question_ids: [] reconciliation_status: "not_checked" requirement_ids: ["R1"] frames: FRAME-1: owner_id: "PCB-1" units: "mm" origin_datum: null origin_source_id: null origin_source_locator: null view: null x_positive_direction: null y_positive_direction: null z_positive_direction: null positive_rotation: null angle_zero_datum: null bottom_view_coordinate_rule: null requirement_ids: ["R1"] boards: PCB-1: name: null role: null existing_or_new: null revision: null frame_id: "FRAME-1" outline: authority: "pending" # Authority: fixed | constrained | delegated | pending. shape: null width_mm: null height_mm: null polygon_vertices_mm: [] arc_definitions: [] tolerance_mm: null source_id: null source_locator: null delegation_id: null cutouts: [] # Each cutout needs an ID, geometry, frame, tolerance, and evidence. holes: HOLE-1: frame_id: "FRAME-1" x_mm: null y_mm: null position_tolerance_mm: null finished_diameter_mm: null diameter_tolerance_mm: null plated: null connected_net_id: null copper_keepout_mm: null fastener_and_tool_access: null requirement_ids: ["R1"] enclosure: reference_source_id: null top_height_limit_mm: null bottom_height_limit_mm: null bottom_components_allowed: null insertion_and_service_access: null keepouts: KEEP-1: frame_id: "FRAME-1" polygon_mm: [] z_min_mm: null z_max_mm: null applies_to: [] clearance_tolerance_mm: null requirement_ids: ["R1"] fabrication: authority: "pending" delegation_id: null layer_count: null ordered_stackup: [] # Each layer needs name, type, material, thickness, copper, dk_er, and df_loss_tangent. total_thickness_mm: null thickness_tolerance_mm: null finish: null copper_thickness_um: [] min_trace_mm: null min_clearance_mm: null min_finished_via_drill_mm: null min_via_pad_mm: null copper_to_edge_mm: null via_covering: null via_in_pad_policy: null fabricator_or_capability_limits: null impedance_requirement_ids: [] assembly_and_test_requirements: null requirement_ids: ["R1"] assemblies: ASSEMBLY-1: members: [] # Members identify boards, enclosures, cables, and existing mating items. existing_interface_source_ids: [] mating_pairs: MATE-1: source_frame_id: null target_frame_id: null source_connector_or_contact_group_id: null target_connector_or_contact_group_id: null mapping_table_id: null source_view: null target_view: null xy_transform_3x3: null # [x_target, y_target, 1]^T = M * [x_source, y_source, 1]^T. # Translation entries use mm. The last row must be [0, 0, 1]. # State view reflection explicitly; do not assume its parity. xy_reflection: null source_normal_in_target_frame: null z_offset_mm: null board_gap_mm: null stack_height_datum_surfaces: null stack_tolerance_mm: null mating_direction: null pin_one_and_numbering_view: null registration_points: - source_xy_mm: null target_xy_mm: null - source_xy_mm: null target_xy_mm: null - source_xy_mm: null target_xy_mm: null registration_max_error_mm: null contact_access_method: null cable_policy: null requirement_ids: ["R1"] retention_and_loading: insertion_sequence: null hard_stop_datum: null travel_mm: null force_limit_n: null deflection_limit_mm: null interlock_control_ids: [] requirement_ids: ["R1"] nets: NET-1: canonical_name: null board_or_interface_scope: null electrical_role: null voltage_domain_id: null reference_return_net_id: null aliases: - source_id: null source_locator: null original_label: null same_node_evidence_id: null requirement_ids: ["R1"] electrical_paths: PATH-1: from_net_id: null to_net_id: null implementation_component_refs_and_pins: [] implementation_authority: "pending" delegation_id: null path_type: null # Path type identifies wire, resistor, diode, buffer, switch, or isolation. permitted_direction: null control_id: null closed_in_state_ids: [] open_in_state_ids: [] max_reverse_current_ua: null max_off_leakage_ua: null max_drop_v: null isolation_limit_and_unit: null requirement_ids: ["R1"] power_domains: POWER-1: board_id: "PCB-1" supply_net_id: null return_net_id: null voltage_min_v: null voltage_nominal_v: null voltage_max_v: null continuous_current_ma: null peak_current_ma: null peak_duration_ms: null allowed_ripple_mv: null source_endpoint_ids: [] load_endpoint_ids: [] independent_of_domain_ids: [] upstream_path_ids: [] reverse_current_limit_ua: null protection_requirements: null fault_current_and_shutdown: null power_up_step: null power_down_step: null prerequisite_domain_ids: [] enable_control_id: null power_good_net_id: null bias_safety_rule: null sequence_requirement_ids: [] requirement_ids: ["R1"] parts: PART-1: board_id: "PCB-1" ref: null function: null hierarchical_channel: null population_status: null # populated | dni | variant_dependent. variant_group: null selection_mode: "pending" # locked | constrained_choice | designer_choice | pending. manufacturer: null mpn: null package_variant: null approved_alternates: [] datasheet_source_id: null datasheet_pin_table_locator: null footprint_source_id: null pin_count: null required_parameters: - name: null minimum: null maximum: null unit: null conditions: null requirement_id: "R1" availability_and_lifecycle_limits: null selection_delegation_id: null substitution_policy: null substitution_confirmation_id: null placement: authority: "pending" frame_id: "FRAME-1" x_mm: null y_mm: null z_datum_mm: null rotation_deg: null side: null position_tolerance_mm: null angle_tolerance_deg: null body_envelope_source_id: null edge_and_access_constraints: null delegation_id: null pins: - pin: null source_pin_name: null net_id: null electrical_type: null io_standard_or_voltage: null operating_role: null # Role: used | supply | exposed_pad | reserved | no_connect | unused. configuration_or_pull: null firmware_binding: null power_off_behavior: null no_connect_or_unused_evidence: null pin_coverage_table_id: null requirement_ids: ["R1"] connectors: CONN-1: board_id: "PCB-1" part_id: null interface_owner: null source_pinout_id: null pin_count: null numbering_and_view: null gender_and_keying: null mating_connector_id: null mating_part_or_selection_authority: null expected_pin_ids: [] pins: - pin: null net_id: null remote_endpoint_and_pin: null direction_relative_to_this_board: null voltage_domain_id: null current_limit_ma: null protection_path_id: null unused_policy: null pin_coverage_table_id: null requirement_ids: ["R1"] contacts: CONTACT-1: contact_group_id: null fixture_board_id: null target_board_id: null target_revision: null target_pad_ref: null target_net_id: null target_frame_id: null target_x_mm: null target_y_mm: null target_surface: null target_pad_geometry_and_finish: null fixture_frame_id: null transformed_x_mm: null transformed_y_mm: null transform_mating_pair_id: null approach_surface_and_direction: null probe_part_id: null hole_or_land_geometry: null lateral_tolerance_mm: null working_height_mm: null working_travel_mm: null force_n: null current_limit_ma: null access_confirmed_evidence_id: null requirement_ids: ["R1"] contact_groups: GROUP-1: declared_contact_count: null expected_contact_ids: [] coordinate_table_id: null total_force_limit_n: null excluded_contacts_and_reasons: [] requirement_ids: ["R1"] channel_maps: MAP-1: function: null declared_channel_count: null expected_channel_ids: [] source_table_id: null implementation_part_ids: [] implementation_delegation_id: null select_control_ids: [] select_bits_in_significance_order: [] disable_control_id: null disable_code: null active_and_disable_polarity: null startup_selection: null channels: - channel_id: null physical_pin_or_functional_endpoint: null implementation_part_id: null implementation_pin: null source_net_id: null destination_net_id: null select_code: null allowed_modes: [] allowed_state_ids: [] voltage_min_v: null voltage_max_v: null simultaneous_use_constraints: null unused_codes_and_required_behavior: null requirement_ids: ["R1"] controls: CTRL-1: function: null owner: null net_id: null controlling_part_and_pin: null active_level: null passive_default_and_tolerance: null reset_state: null powered_off_state: null firmware_address_register_bit: null hardware_strap_and_address: null prerequisite_control_ids: [] initialization_sequence: - step_id: null prerequisite: null target_address_or_register: null mask_and_value: null action: null expected_result: null timeout_ms: null failure_behavior: null controlled_path_ids: [] requirement_ids: ["R1"] operating_states: STATE-1: name: null entry_condition: null supply_states: - power_domain_id: null state: null # State: off | starting | valid | falling | fault. external_device_power_conditions: [] control_values: [] # Each entry identifies control_id, value, and whether its driver is valid. permitted_path_ids: [] forbidden_path_ids: [] allowed_drive_and_measurement: null loading_limit_and_unit: null safe_failure_behavior: null exit_condition: null requirement_ids: ["R1"] state_coverage: independent_supply_combinations: [] startup_reset_shutdown_fault_state_ids: [] hot_plug_and_external_device_cases: [] prohibited_combinations_with_reasons: [] transitions: - from_state_id: null to_state_id: null prerequisites: [] control_actions_in_order: [] settling_time_ms: null failure_action: null omitted_cases_with_evidence: [] interfaces: INTERFACE-1: kind: null endpoint_ids: [] voltage_domain_ids: [] speed_and_timing_limits: null direction_and_driver_ownership: null pullups_termination_and_reference: null loading_and_capacitance_limits: null unpowered_and_hot_plug_behavior: null required_signal_integrity: null protocol_and_firmware_dependencies: null requirement_ids: ["R1"] layout_constraints: CONSTRAINT-1: kind: null # Examples: current, impedance, differential_pair, RF, analog, isolation. board_id: "PCB-1" affected_net_ids: [] affected_part_ids: [] routing_topology: null limit: null unit: null min_length_mm: null max_length_mm: null intra_pair_skew_ps_or_mm: null inter_net_match_group_id: null inter_net_match_tolerance_mm: null freq_min_mhz: null freq_max_mhz: null transmission_line_type: null max_rf_power_dbm: null conditions: null reference_return_net_id: null physical_region_or_layer: null acceptance_id: "AC-1" requirement_ids: ["R1"] environment_and_compliance: intended_locations_and_users: null temperature_range_c: null humidity_and_condensation: null vibration_shock_ingress_and_chemicals: null thermal_dissipation_and_touch_limits: null accessible_voltages_and_energy: null radio_regions_and_use: null requested_standards: - designation_and_edition: null scope: null responsible_party: null status: "open" certification_deliverables_and_exclusions: null evidence_ids: [] requirement_ids: ["R1"] acceptance: AC-1: requirement_ids: ["R1"] setup_and_conditions: null stimulus: null expected_observation: null desired_target: null required_limit: null unit: null method: null method_status: "proposed" equipment_or_reference: null measurement_uncertainty_limit: null fault_and_negative_cases: [] evidence_to_deliver: null execution_status: "not_run" # not_run | passed | failed | blocked | not_applicable. execution_build_or_unit_revision: null execution_source_ids: [] evidence: EVIDENCE-1: target_paths: ["/scope/objective"] status: "open" # confirmed | proposed | assumed | open. source_type: "assistant_inference" # current_user | prior_context | supplied_document | assistant_inference. source_id: null source_locator: null original_statement_or_value: null origin: "ai_inference" # customer_statement | source_extract | ai_inference | calculation | measurement. author_role: "customer_local_assistant" confidence: null # An AI inference requires a value below 1. derived_from_evidence_ids: [] calculation_and_units: null confirmation_id: null question_ids: ["Q-1"] delegations: DELEGATION-1: status: "proposed" responsible_party: null scope_paths: [] design_outputs_to_resolve: [] fixed_interfaces_and_prohibited_changes: [] bounds_and_conditions: null requirement_ids: ["R1"] acceptance_ids: ["AC-1"] later_activity_blocked_until_resolved: null confirmation_id: null assumptions: ASSUMPTION-1: statement: null affected_paths: [] consequence_if_wrong: null allowed_reversible_work: null prohibited_use: null status: "open" question_ids: ["Q-1"] evidence_ids: [] conflicts: CONFLICT-1: affected_paths: [] competing_source_ids: [] competing_values_and_locators: [] question_id: null resolution: null governing_source_id: null confirmation_id: null status: "open" questions: Q-1: trigger_code: "T01" severity: "blocker" # blocker | material | optional. affected_paths: ["/scope/objective"] requirement_ids: ["R1"] missing_fact_or_conflict: null question: null expected_answer_format: null why_it_matters: null blocked_activities: [] resolver: "customer" next_action: null status: "open" # open | answered | superseded. asked_at: null answer_source_id: null answer_locator: null resolution_and_changed_paths: null closed_by_evidence_ids: [] review: confirmations: CONFIRMATION-1: document_revision: null scope_paths: [] source_id: null message_locator: null actor_role: "customer" recorded_at: null verbatim_statement: null # Store actual authority. Never generate a statement for the customer. assembled_revision_confirmation_id: null customer_handoff_instruction_source_id: null sharing_scope_and_destination: null imported_approval_status: "source_claim_only" supplier_baseline_lock_status: "not_established" quote_or_order_status: "not_established" production_release_status: "not_authorized" readiness: state: "needs_answers" # needs_answers | discovery_only | ready_for_engineering_review. engineering_review_status: "not_reviewed" unresolved_blocker_ids: [] unresolved_material_question_ids: [] authorized_delegation_ids: [] confirmed_inapplicable_topics: [] gate_results: V01: {result: "not_run", method: null, evidence_source_ids: [], notes: null} V02: {result: "not_run", method: null, evidence_source_ids: [], notes: null} V03: {result: "not_run", method: null, evidence_source_ids: [], notes: null} V04: {result: "not_run", method: null, evidence_source_ids: [], notes: null} V05: {result: "not_run", method: null, evidence_source_ids: [], notes: null} V06: {result: "not_run", method: null, evidence_source_ids: [], notes: null} V07: {result: "not_run", method: null, evidence_source_ids: [], notes: null} V08: {result: "not_run", method: null, evidence_source_ids: [], notes: null} V09: {result: "not_run", method: null, evidence_source_ids: [], notes: null} V10: {result: "not_run", method: null, evidence_source_ids: [], notes: null} V11: {result: "not_run", method: null, evidence_source_ids: [], notes: null} V12: {result: "not_run", method: null, evidence_source_ids: [], notes: null} # Result: passed | failed | not_run | not_applicable. # Method: manual | tool | null. # not_applicable needs confirmed evidence; it cannot skip a universal rule. checked_document_revision: null checked_at: null checker_role: null next_action: null glossary: TERM-1: term: null meaning: null ~~~ ### Additional rules for the schema Use this section when reviewing the YAML or implementing a validator. 1. V01, V02, V03, V04, V05, V09, V10, V11, and V12 always apply. 2. A conditional rule needs confirmed applicability and evidence. 3. A missing required value creates a question even when its record has no example row. 4. Every mandatory question blocks readiness until an answer or valid delegation resolves it. 5. Relabeling a mandatory question as optional cannot bypass a gate. 6. Optional commercial targets do not block readiness when their absence is explicit. 7. Remove empty example records from a finished package. 8. Retain real records and their stable identifiers. 9. Every reference resolves within its project, Task Order, or declared package scope. 10. Every declared physical pin appears once in its authoritative map. 11. Every contact and channel has an explicit identity. 12. Every expected identity appears in the extracted set or a confirmed exclusion. 13. Duplicate rows cannot satisfy a declared count. 14. Alias equivalence requires evidence for the same physical node. 15. Different names across a component remain distinct nodes. 16. Each power combination has a defined case or a confirmed exclusion. 17. A source coordinate needs a checked transform before it becomes a fixed target coordinate. 18. Fixed parts require an exact package variant and its complete physical pin map. 19. Delegated internal parts need confirmed selection bounds before they can remain unresolved. 20. A not_run test cannot become passed without execution evidence for the stated revision. 21. A changed source or confirmed field invalidates the affected review. 22. The Task Order hash must match the bundled JSON bytes. 23. Every manifest entry must match the actual bundled file. 24. The final document requires explicit review of the assembled current revision. The planar transform uses an orthonormal linear part after unit normalization. Its determinant must match the stated view reflection. The registration points must be noncollinear. Check every residual against the confirmed registration tolerance. Use a full spatial transform for tilted boards or nonplanar mating. Record that transform and its datum drawing as a required attachment. For each state, account for every independent supply and external interface. Enumerate relevant supply combinations and transitions. Record each excluded combination with a confirmed reason. Check control validity when its driving supply is off. Distinguish galvanic isolation from a disconnected signal path. Canonical names must be unique within their declared electrical scope. An alias cannot identify two nodes in the same source and electrical scope. Resolve any collision before using that alias. Keep document status DRAFT until your client confirms the assembled revision. Then use CLIENT_CONFIRMED_FUNCTIONAL_GOALS if the supplied intake contract accepts that status. Otherwise retain its required status vocabulary and record confirmation separately. A confirmed functional scope can still have needs_answers for detailed engineering. The complete package can be reviewed asynchronously. It remains a proposed engineering input until Pure Engineering accepts its scope and authority.