Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
16 changes: 16 additions & 0 deletions design/manufacture/3D-Printer_truth.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Type of Additive Manufactory
material extrusion (MEX)
material jetting (MJT)
powder bed fusion (PBF)
directed energy deposition (DED)
vat photopolymerization (VPP)
binder jetting (BJT)
sheet lamination (SHL)


# Tolerence
FDM (MEX的一種): lower limit: ±0.5 mm
SLA: lower limit: ±0.1 mm
DMLS: lower limit: ±0.1-0.2 mm
EBF (DED的一種):
Source: https://aipprecision.com/why-even-the-most-precise-3d-printers-fall-short-in-regulated-manufacturing/
2 changes: 1 addition & 1 deletion queue/gap_type_registry.json
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@
"description": "Manual research task completed by writing task-specific artifacts.",
"created_by": "ream250_bom_research_task_pack",
"created_at": 1781129955.0,
"usage_count": 401,
"usage_count": 5,
"source": "manual"
}
}
144 changes: 112 additions & 32 deletions queue_tasks/research_pack/ream250_bom_research/acceptance_criteria.md
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,49 @@ Then the section may cite the vendor page and CAD as source facts
But `how_to_make.source.evidence_basis` must be `engineering_hypothesis` unless
the cited source directly states the relevant manufacturing route.

## AC-MAKE-002: Do Not Use Procurement As The Manufacturing Route

Type: Judgment-required

Rule:
The research target is local lunar closure, so `how_to_make` must describe how
to make, fabricate, assemble, form, machine, finish, test, or decompose the part
for later local manufacture. Do not write procurement, buying, ordering,
inventory, quote, vendor replacement, or commercial supply as a manufacturing
route.

Given a BOM row identifies a vendor catalog item or purchased standard part
When the worker writes `how_to_make.summary` and `manufacturing_steps`
Then the worker should use the vendor identity only as evidence for geometry,
interfaces, material, or function
And should write the route as local manufacture or, for true modules, deferred
sub-BOM decomposition
And should not include procurement-first wording such as "Procure as ...",
"Buy ...", "Order ...", or "near-term procurement route ...".

If exact factory process evidence is unavailable, keep the local route and lower
`how_to_make.source.evidence_basis` according to AC-MAKE-001 instead of falling
back to procurement wording.

For `item_granularity: complex_module`, do not invent a detailed local
manufacturing process when the module has not been decomposed. In that case,
`how_to_make` should explicitly state that row-level manufacturing is deferred
until a later sub-BOM/decomposition task, and should list only the minimum
subsystems or process questions that must be resolved later.

For `item_granularity: simple_part`, write the route as local production of the
part itself. Do not use vendor designations, "specify this catalog item",
"prepare as a standard X", "obtain", or "cut/order this standard part" as the
route. Vendor or standard-part evidence may constrain geometry, material family,
interfaces, hole pattern, mass, or tolerance targets, but the manufacturing
steps should start from local feedstock or a local blank and proceed through the
needed forming, machining, heat treatment, finishing, and inspection operations.

Because local production is the default framing for this research, avoid
fallback-style wording such as "a plausible local route is", "a local route
would", "local fallback", "local substitute", or "local approximation" in
`how_to_make`. State the manufacturing/decomposition action directly.

## AC-STD-001: Standard Part Conventions Need Complete Parameters

Type: Partially validator-enforced
Expand Down Expand Up @@ -399,54 +442,56 @@ signal starting with `item_granularity: <value> - ...`.
Allowed values:

- `simple_part`
- `assembly`
- `purchased_module`
- `consumable`
- `raw_material_or_stock`
- `complex_module`
- `unknown`

Given the result has `kb_implications`
When the worker writes item granularity
Then exactly one bullet should start with `item_granularity: <value> - `
And `<value>` must be one of the allowed values.

## AC-GRAN-002: Multi-Material Does Not Imply Assembly
## AC-GRAN-002: Multi-Material Does Not Imply Complex Module

Type: Judgment-required

Rule:
Multi-material construction alone does not imply `assembly`. Choose the value
that best predicts how the KB should model the row next.
Multi-material construction alone does not imply `complex_module`. Choose the
value that best predicts how the KB should manufacture or decompose the row
next.

Given a row item contains multiple materials
When it is a replaceable seal, centering ring, O-ring, filter element, belt, or
similar maintenance item
Then prefer `item_granularity: consumable`
And explain any multi-material construction after the dash
But do not classify it as `assembly` solely because more than one material is
present.
When it is still a single manufactured or applied object such as a gasket,
centering ring, O-ring, filter element, belt, adhesive bead, or seal
Then prefer `item_granularity: simple_part`
And explain any wear, replacement, stock, or multi-material behavior after the
dash
But do not classify it as `complex_module` solely because more than one material
is present.

Given the row is a replaceable timing belt, conveyor belt, O-ring, gasket, seal,
filter element, lubricant, adhesive, or similar wear/replacement item
When choosing item granularity
Then prefer `item_granularity: consumable`
Unless the row is clearly a larger calibrated vendor subsystem rather than the
replaceable item itself.
Then prefer `item_granularity: simple_part`
And document the consumable/replacement behavior in the explanation rather than
using a separate granularity label.

## AC-GRAN-003: Standard Hardware Is Not A Purchased Module
## AC-GRAN-003: Standard Hardware And Stock Forms Are Simple Parts

Type: Judgment-required

Rule:
Standard hardware purchased from a vendor is not automatically a
`purchased_module`, and finished standard fasteners are not raw stock. Use
The reAM250 research is intended to support eventual local manufacturing, not to
preserve procurement status as item granularity. Standard hardware purchased
from a vendor is not automatically a complex module, finished standard
fasteners are not raw stock, and cut stock/profile rows should still be modeled
as manufacturable simple parts. Use
`simple_part` for one-piece or simple standard hardware such as clamps,
brackets, bolts, screws, nuts, washers, simple pulleys, and similar fasteners
unless the row is a calibrated functional module or a multi-part assembly that
should be modeled as such. Reserve `raw_material_or_stock` for stock forms such
as sheet, bar, tube, extrusion, profile, wire, plate, rod, hose/pipe stock, or
cut-to-length stock where later KB work should model length/size variants rather
than a finished hardware item.
unless the row is a calibrated functional module, complex mechanism, or
multi-part assembly that should be deferred as `complex_module`.
For stock forms such as sheet, bar, tube, extrusion, profile, wire, plate, rod,
or cut-to-length stock, use `simple_part` and explain the stock form / cut length
after the dash.

Given the row is a standard ISO-K claw clamp or similar vacuum fastener
When the row is one simple hardware item without a sub-BOM or calibration
Expand All @@ -459,22 +504,57 @@ Given the row is a finished DIN/ISO bolt, screw, nut, washer, or similar
fastener
When the worker writes item granularity
Then prefer `item_granularity: simple_part`
And do not use `raw_material_or_stock`
And explain that later KB work should reuse or create generic standard hardware
or a fastener kit.

## AC-GRAN-004: Purchased Module Is A Current Modeling Hint
Given the row is a cut-to-length tube, extrusion, strut profile, bar, shaft,
plate, wire, hose, or similar stock form
When the worker writes item granularity
Then prefer `item_granularity: simple_part`
And explain that the stock/profile form and length variant should be represented
in manufacturing route, recipe parameters, BOM notes, or future consolidation,
not as a separate granularity label.

Given the row is a single precision rail, guide rail, shaft, or machined profile
with no row-level sub-BOM
When the worker writes item granularity
Then prefer `item_granularity: simple_part`
And capture hardening, grinding, coating, inspection, and mating-carriage
compatibility in the explanation or manufacturing route.

Given the row is a standard bearing, shaft seal, bellows hose, vacuum pipe,
vacuum fitting, clamp, coupling, powder container, optical window panel, or
other row-level hardware item whose local route can be described as one
manufacturing or fabrication workflow
When the worker writes item granularity
Then prefer `item_granularity: simple_part`
And capture precision, sealing, certification, cleaning, passivation, leak
testing, or compatibility requirements in the explanation instead of using
`complex_module` as a proxy for procurement or quality requirements.

## AC-GRAN-004: Complex Module Is A Deferred Decomposition Hint

Type: Judgment-required

Rule:
`purchased_module` means the row is best treated as a vendor functional module
or calibrated subsystem until a sub-BOM and calibration/manufacturing workflow
are modeled. It does not mean the item can never be self-manufactured later.
`complex_module` means the row is a multi-part assembly, functional module,
calibrated subsystem, or mechanically/electrically complex object that should
not be decomposed in this research pass. It is a deferred local-manufacturing
signal, not a procurement claim.

Given the row is a sensor head, pump, controller, laser module, or calibrated
vendor subsystem
When no sub-BOM and calibration workflow are available
Then `item_granularity: purchased_module` may be appropriate
And the explanation should distinguish current KB modeling from long-term
self-manufacturing goals.
Then `item_granularity: complex_module` may be appropriate
And the explanation should say that later KB work should split it into internal
parts, materials, calibration, and manufacturing workflows when that subsystem
becomes a priority.

Given the row is a linear-guide carriage/block, bearing unit, or complete linear
support guide with rolling elements, seals, preload/alignment details, or
multiple hidden components
When no row-level sub-BOM is available
Then `item_granularity: complex_module` may be appropriate
And the explanation should state that later KB work should split body, rolling
elements, retainers, seals, lubricant, heat treatment, grinding, assembly, and
inspection only when guideway manufacturing becomes a priority.
28 changes: 23 additions & 5 deletions queue_tasks/research_pack/ream250_bom_research/agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,13 @@ For each leased row, research and write one Markdown result at
total in `mass.basis`.
- `material`: the best supported material family, grade, or component material
set.
- `how_to_make`: a plausible manufacturing, assembly, or procurement route.
- `how_to_make`: a plausible local manufacturing, assembly, inspection, or
deferred sub-BOM decomposition route. Do not use procurement, buying, ordering,
quote, inventory, or vendor replacement as the route.
Because local production is the default, do not write fallback-style wording
such as "a plausible local route is", "a local route would", "local fallback",
"local substitute", or "local approximation"; state the manufacturing or
decomposition action directly.
- `kb_implications`: exactly one item granularity planning signal for later KB
modeling.

Expand Down Expand Up @@ -200,10 +206,22 @@ Use that file as the authority for result-quality decisions, especially:
- standard part convention parameter completeness
- source / assumptions / uncertainty separation
- item_granularity selection
- finished bolts, screws, nuts, washers, and similar fasteners should usually
be `simple_part`, not `raw_material_or_stock`
- reserve `raw_material_or_stock` for stock forms such as sheet, bar, tube,
extrusion, profile, wire, plate, rod, or cut-to-length stock
- this research is local-manufacturing oriented; do not use procurement,
consumable behavior, or stock form as item granularity
- finished bolts, screws, nuts, washers, simple clamps, simple vacuum fittings,
seals, gaskets, belts, adhesives, and cut-to-length stock/profile rows should
usually be `simple_part`
- single precision rails, guide rails, shafts, and machined profiles are still
usually `simple_part`; capture hardening, grinding, coating, inspection, and
mating-carriage compatibility in the explanation
- standard bearings, shaft seals, bellows hoses, vacuum fittings, clamps,
couplings, powder containers, and optical window panels are usually
`simple_part` when the row-level local route can be written as one
fabrication or manufacturing workflow
- use `complex_module` for multi-part assemblies, functional modules,
calibrated subsystems, linear-guide carriages/blocks, bearing units, or
complex mechanisms that should be decomposed in later KB work instead of
this row-level pass

Keep research concise. Use at most 4 external sources per result unless the row
cannot be resolved without more. Follow BOM-provided URL routes first when they
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,7 @@ sections:
prefix: "item_granularity: <value> - "
allowed_values:
- simple_part
- assembly
- purchased_module
- consumable
- raw_material_or_stock
- complex_module
- unknown

semantics:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,7 @@
TOP_LEVEL_LIST_FIELDS = ("kb_implications",)
ITEM_GRANULARITY_VALUES = (
"simple_part",
"assembly",
"purchased_module",
"consumable",
"raw_material_or_stock",
"complex_module",
"unknown",
)
ITEM_GRANULARITY_RE = re.compile(
Expand Down Expand Up @@ -309,34 +306,24 @@ def validate_kb_implications(data: Dict[str, Any]) -> List[str]:
]

row_identity = data.get("row_identity") if isinstance(data.get("row_identity"), dict) else {}
function = data.get("function") if isinstance(data.get("function"), dict) else {}
cad_file = str(row_identity.get("cad_file") or "")
cad_file_lower = cad_file.lower()
function_summary = str(function.get("summary") or "")
granularity_context = " ".join([entry, cad_file, function_summary])
is_belt_item = "belt" in cad_file_lower and "pulley" not in cad_file_lower
is_replaceable_consumable_item = bool(REPLACEABLE_CONSUMABLE_CAD_RE.search(cad_file))
if (is_belt_item or is_replaceable_consumable_item) and value != "consumable":
if (is_belt_item or is_replaceable_consumable_item) and value == "complex_module":
return [
"kb_implications item_granularity should be consumable for replaceable "
"belts, O-rings, gaskets, filter elements, lubricants, adhesives, and "
"similar maintenance items unless the row is clearly a larger calibrated "
"vendor subsystem"
"kb_implications item_granularity should usually be simple_part for "
"replaceable belts, O-rings, gaskets, filter elements, lubricants, "
"adhesives, and similar maintenance items; capture replacement or "
"application behavior in the explanation, not as granularity"
]
if value == "purchased_module" and STANDARD_HARDWARE_NOT_MODULE_RE.search(granularity_context):
if value == "complex_module" and STANDARD_HARDWARE_NOT_MODULE_RE.search(cad_file):
return [
"kb_implications item_granularity should not be purchased_module for "
"kb_implications item_granularity should not be complex_module for "
"simple standard hardware such as claw clamps, fasteners, bolts, screws, "
"nuts, or washers; use simple_part unless the row is a calibrated "
"functional module or a multi-part assembly"
]
if value == "raw_material_or_stock" and STANDARD_HARDWARE_CAD_RE.search(cad_file):
return [
"kb_implications item_granularity should not be raw_material_or_stock "
"for finished standard fasteners such as bolts, screws, nuts, or "
"washers; use simple_part while noting that later KB work should map "
"them to reusable standard hardware or a fastener kit"
]
return []


Expand Down
Loading