Skip to content
Merged
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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions sew-through-button/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Sew-through button dimensions

Last Updated: 2026-09-30

This cartridge owns the button solid; Fashion Cabinet owns garment sizing and
the mapping from a garment to its hardware. See the
[commons topology](../README.md#the-four-repo-topology) and
[contribution rules](../CONTRIBUTING.md).

The manifest accepts thickness, hole diameter and dish depth in 0.01 mm steps,
and hole spacing in 0.005 mm steps. These steps preserve fine dimensions from
garment mappings, including the ligne-to-millimetre conversion, without silently
rounding them to the former coarse increments. They describe input resolution,
not manufacturing accuracy. Existing bounds, integer ligne sizes, two/four-hole
choices, geometry constraints and batch limits still apply.

Three presets exercise the additional resolution:

| Preset | Dimensions covered |
| --- | --- |
| `infant_precise` | 1.62 mm thickness, 1.08 mm holes, 3.24 mm spacing and 0.36 mm dish |
| `placket_precise` | 24 L button with 5.08 mm hole spacing |
| `small_precise` | 15 L button with 3.175 mm hole spacing |

The source geometry is unchanged. Validation renders both modes and every
preset with the [shared geometry gate](../README.md#validating-a-cartridge).
Platforms must consume the updated manifest contract before the added input
resolution is available in their handoffs. Values outside the declared grid,
bounds or active mode remain unsupported.

Private rollout evidence belongs in Internal DevOps under the
[repository boundary](../docs/PUBLIC_REPO_BOUNDARY.md).
52 changes: 48 additions & 4 deletions sew-through-button/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@
"default": 3.0,
"min": 1.0,
"max": 6.0,
"step": 0.2,
"step": 0.01,
"group": "size",
"modes": [
"button",
Expand Down Expand Up @@ -185,7 +185,7 @@
"default": 1.5,
"min": 1.0,
"max": 3.0,
"step": 0.1,
"step": 0.01,
"group": "holes",
"modes": [
"button",
Expand All @@ -206,7 +206,7 @@
"default": 4.0,
"min": 2.0,
"max": 12.0,
"step": 0.5,
"step": 0.005,
"group": "holes",
"modes": [
"button",
Expand All @@ -227,7 +227,7 @@
"default": 0.8,
"min": 0.0,
"max": 2.0,
"step": 0.1,
"step": 0.01,
"group": "size",
"modes": [
"button",
Expand Down Expand Up @@ -312,6 +312,50 @@
"dish_depth": 0.6,
"card_count": 8
}
},
{
"id": "infant_precise",
"mode": "button",
"label": {
"en": "Infant button (18 L, fine dimensions)",
"es": "Botón infantil (18 L, dimensiones finas)"
},
"values": {
"button_ligne": 18,
"thickness": 1.62,
"hole_count": 2,
"hole_dia": 1.08,
"hole_spacing": 3.24,
"dish_depth": 0.36
}
},
{
"id": "placket_precise",
"mode": "button",
"label": {
"en": "Shirt placket button (24 L, 5.08 mm spacing)",
"es": "Botón de cartera (24 L, separación de 5.08 mm)"
},
"values": {
"button_ligne": 24,
"hole_count": 4,
"hole_spacing": 5.08,
"hole_dia": 1.8
}
},
{
"id": "small_precise",
"mode": "button",
"label": {
"en": "Small button (15 L, 3.175 mm spacing)",
"es": "Botón pequeño (15 L, separación de 3.175 mm)"
},
"values": {
"button_ligne": 15,
"hole_count": 4,
"hole_spacing": 3.175,
"hole_dia": 1.6
}
}
],
"constraints": [
Expand Down
Loading