Solid Rivet Installation Quality (manufacturing-quality/assembly/solid-rivet-installation-quality)
Use when the task is verifying the installation quality of solid rivets
at assembly time. Solid rivets are deformation-driven permanent
fasteners: the installer selects a rivet long enough to fill the stack
and form a shop head, upsets the tail with a squeeze force against the
material flow stress, and the driven head must land inside workmanship
bands on diameter and height while the hole fill clearance stays within
the installation limit. This leaf implements the four checks in pure
Python, stdlib only: rivet length selection from the stack and the
head-style allowance, the driven shop head geometry verdict, the
squeeze force to upset, and the hole fill clearance check, plus a
combined installation verdict. It is the deformation-fastener complement
of manufacturing-quality/assembly/fastener-installation-quality, which
owns threaded and lock-bolt fastener mechanics; hole drilling process
control and rivet fatigue allowables are out of scope here.
Domain quick reference
- Rivet length selection: length = stack + allowance, where the
allowance is a head-style factor times the shank diameter. Typical
practice: protruding heads 1.5 d, countersunk heads 0.8 d (documented
workmanship allowance, confirm against the governing process
specification for the program).
- Driven shop head geometry: after upsetting, the driven head diameter
should fall between 1.4 d and 1.5 d and the driven height between
0.4 d and 0.5 d, d being the nominal rivet shank diameter. A head
below 1.4 d or 0.4 d is under-driven (insufficient fill), above
1.5 d or 0.5 d is over-formed; the band is symmetric around 1.45 d
and 0.45 d.
- Squeeze force: F = factor * sigma_flow * (pi d^2 / 4), with sigma_flow
the flow stress in MPa (N/mm2) and a typical allowance factor of 1.5
on the shank area upset force.
- Hole fill: clearance = hole diameter - rivet diameter; a driven rivet
must fill its hole to within 0.1 mm of clearance (typical limit).
Interference fits are out of scope for this check.
- Units: dimensions in mm, force in N, flow stress in MPa. The factors
above are leaf-local typical values in the same epistemic class as
the torque coefficient used by the threaded fastener sibling; they are
workmanship practice, not standard data.
- AS9100 frames the process-control context (records, operator
certification, traceability around the installation); the relations
above are standard engineering methodology, summary-only.
Workflow
- Fix the installation: stack thickness, rivet shank diameter, head
style ("protruding" or "countersunk").
- Select the rivet length with select_rivet_length: allowance plus
stack, 1.5 d protruding or 0.8 d countersunk.
- Measure the driven shop head after upsetting and judge it with
shop_head_verdict against the 1.4 to 1.5 d diameter and 0.4 to
0.5 d height bands.
- Compute the upset requirement with squeeze_force from the shank
diameter, the material flow stress and the allowance factor.
- Check the hole fill with hole_fill_check: the clearance between the
drilled hole and the rivet must not exceed the 0.1 mm limit; a rivet
larger than its hole (interference) is rejected as out of scope.
- Combine the sub-checks with installation_verdict into one verdict
with the overall ok flag when shop head and hole fill both pass.
- Confirm the deterministic checks with the contract test
scripts/test_solid_rivet_installation_quality.py.
Worked example
A 4.0 mm protruding rivet over a 6.0 mm stack, driven head 5.8 mm
diameter by 1.8 mm height, flow stress 275 MPa, hole 4.08 mm.
- Length, protruding: allowance = 1.5 * 4.0 = 6.0 mm, so the rivet
length is 6.0 + 6.0 = 12.0 mm (select_rivet_length real output).
- Length, countersunk: allowance = 0.8 * 4.0 = 3.2 mm, length 9.2 mm.
- Shop head: d_over_d = 5.8 / 4.0 = 1.45, h_over_d = 1.8 / 4.0 = 0.45,
both mid-band, ok True.
- Under-driven head 5.0 x 1.2 mm: d_over_d 1.25, h_over_d 0.30, ok
False (under the 1.4 d and 0.4 d edges).
- Squeeze force: area = pi * 4.0^2 / 4 = 12.566 mm2; F = 1.5 * 275 *
12.566 = 5183.6 N (real module output 5183.63 N).
- Hole fill: 4.08 - 4.0 = 0.08 mm clearance, within 0.1 mm, ok True;
a 4.15 mm hole gives 0.15 mm, ok False.
- Combined: installation_verdict on the good head and 4.08 mm hole
returns overall_ok True.
Verification
- Confirm select_rivet_length(6.0, 4.0, "protruding") returns
allowance 6.0 mm and length 12.0 mm, and the countersunk case 3.2 and
9.2 mm; doubling the stack adds exactly the stack increment.
- Confirm shop_head_verdict(5.8, 1.8, 4.0) returns 1.45 / 0.45 ok True
and (5.0, 1.2, 4.0) returns 1.25 / 0.30 ok False; band edges 1.4 d /
0.4 d and 1.5 d / 0.5 d pass inclusively, and 1.6 d or 0.55 h fail.
- Confirm squeeze_force(4.0, 275) returns 5183.6 N within 0.1 N, and
that the force scales with the diameter squared, linearly with flow
stress and linearly with the factor.
- Confirm hole_fill_check(4.08, 4.0) passes at 0.08 mm, (4.15, 4.0)
fails at 0.15 mm, and the exact 0.1 mm boundary passes (clearance
limit is <=).
- Confirm every non-positive stack, diameter, dimension, flow stress or
factor, every unknown head style, every hole at or below the rivet
diameter (interference), and every negative max clearance raises
ValueError.
- Run the contract test offline: python3
scripts/test_solid_rivet_installation_quality.py (30 tests,
deterministic).
Related leaves
- manufacturing-quality/assembly/fastener-installation-quality: the
threaded and lock-bolt sibling (grip, thread protrusion and clamp
load checks); boundary is torque mechanics versus deformation
fasteners, this leaf never applies torque-tension relations.
- manufacturing-quality/assembly/ewis-installation-quality: the wiring
installation sibling in the same assembly pack.
Pitfalls
- Sizing with the wrong head-style allowance: protruding heads take
1.5 d and countersunk heads 0.8 d, so a countersunk rivet sized at
1.5 d is 0.7 d too long and its shop head will not form to band.
- Judging a driven head on diameter alone: the shop head verdict needs
both the diameter (1.4 to 1.5 d) and the height (0.4 to 0.5 d) in
band - an over-formed diameter with an under-driven height is still
a fail, and a head below either low edge is under-driven rather than
acceptable.
- Treating the workmanship values as standard data: the 1.5 d / 0.8 d
allowances, 1.4-1.5 d and 0.4-0.5 d bands, 1.5 flow-stress factor
and 0.1 mm hole fill limit are documented typical practice in the
same epistemic class as the threaded sibling's torque coefficient -
confirm them against the governing process specification.
- Feeding an interference fit: a hole at or below the rivet diameter
raises ValueError - interference fits are out of scope for this
check, not something to score with a negative clearance.
- Applying torque-tension mechanics here: this leaf is the deformation
fastener complement of fastener-installation-quality and never
applies the F = T / (k * D) relation used for threaded and lock-bolt
fasteners.
- Passing on one sub-check: the combined installation verdict requires
the shop head and the hole fill to pass together, so a mid-band head
with a 0.15 mm hole clearance is still an overall fail.
Behavior contract (gate 3)
Run the deterministic contract test (stdlib unittest, offline):
python3 scripts/test_solid_rivet_installation_quality.py
The test covers the worked-example anchors (12.0 mm protruding and
9.2 mm countersunk lengths, 1.45/0.45 ok and 1.25/0.30 fail shop head
verdicts, 5183.6 N squeeze force to 0.1 N, 0.08 mm pass and 0.15 mm
fail hole fill), the inclusive band edges and band symmetry identity,
the d^2, flow stress and factor scaling laws, the exact 0.1 mm hole
fill boundary, the combined installation verdict and its keys, run to
run determinism, and ValueError rejection of every non-physical input
listed in Verification.
Compliance
- Standards referenced, not reproduced: AS9100 is cited as the process
control frame (reference-only per standards-map.yaml); the workmanship
factors and relations above are typical engineering practice,
summary-only.
- compliance: STANDARDS-REF, gated: false.
1---2name: solid-rivet-installation-quality3description: Use when you must verify the installation quality of solid rivets during assembly: select the rivet length from the stack thickness plus a head-style allowance (protruding heads 1.5 diameters, countersunk heads 0.8 diameters), judge the driven shop head geometry against the workmanship bands (driven diameter 1.4 to 1.5 d, driven height 0.4 to 0.5 d), compute the squeeze force needed to upset the rivet against the material flow stress over the shank area, and check the hole fill clearance against the 0.1 mm limit. Produces the selected rivet length, the shop head verdict, the required squeeze force and the hole fill verdict that gate the assembly quality assessment. Trigger: solid rivet length selection, shop head dimensions, driven head formation, rivet squeeze force, hole fill check.4license: Apache-2.05---67# Solid Rivet Installation Quality (manufacturing-quality/assembly/solid-rivet-installation-quality)89Use when the task is verifying the installation quality of solid rivets10at assembly time. Solid rivets are deformation-driven permanent11fasteners: the installer selects a rivet long enough to fill the stack12and form a shop head, upsets the tail with a squeeze force against the13material flow stress, and the driven head must land inside workmanship14bands on diameter and height while the hole fill clearance stays within15the installation limit. This leaf implements the four checks in pure16Python, stdlib only: rivet length selection from the stack and the17head-style allowance, the driven shop head geometry verdict, the18squeeze force to upset, and the hole fill clearance check, plus a19combined installation verdict. It is the deformation-fastener complement20of manufacturing-quality/assembly/fastener-installation-quality, which21owns threaded and lock-bolt fastener mechanics; hole drilling process22control and rivet fatigue allowables are out of scope here.2324## Domain quick reference2526- Rivet length selection: length = stack + allowance, where the27 allowance is a head-style factor times the shank diameter. Typical28 practice: protruding heads 1.5 d, countersunk heads 0.8 d (documented29 workmanship allowance, confirm against the governing process30 specification for the program).31- Driven shop head geometry: after upsetting, the driven head diameter32 should fall between 1.4 d and 1.5 d and the driven height between33 0.4 d and 0.5 d, d being the nominal rivet shank diameter. A head34 below 1.4 d or 0.4 d is under-driven (insufficient fill), above35 1.5 d or 0.5 d is over-formed; the band is symmetric around 1.45 d36 and 0.45 d.37- Squeeze force: F = factor * sigma_flow * (pi d^2 / 4), with sigma_flow38 the flow stress in MPa (N/mm2) and a typical allowance factor of 1.539 on the shank area upset force.40- Hole fill: clearance = hole diameter - rivet diameter; a driven rivet41 must fill its hole to within 0.1 mm of clearance (typical limit).42 Interference fits are out of scope for this check.43- Units: dimensions in mm, force in N, flow stress in MPa. The factors44 above are leaf-local typical values in the same epistemic class as45 the torque coefficient used by the threaded fastener sibling; they are46 workmanship practice, not standard data.47- AS9100 frames the process-control context (records, operator48 certification, traceability around the installation); the relations49 above are standard engineering methodology, summary-only.5051## Workflow52531. Fix the installation: stack thickness, rivet shank diameter, head54 style ("protruding" or "countersunk").552. Select the rivet length with select_rivet_length: allowance plus56 stack, 1.5 d protruding or 0.8 d countersunk.573. Measure the driven shop head after upsetting and judge it with58 shop_head_verdict against the 1.4 to 1.5 d diameter and 0.4 to59 0.5 d height bands.604. Compute the upset requirement with squeeze_force from the shank61 diameter, the material flow stress and the allowance factor.625. Check the hole fill with hole_fill_check: the clearance between the63 drilled hole and the rivet must not exceed the 0.1 mm limit; a rivet64 larger than its hole (interference) is rejected as out of scope.656. Combine the sub-checks with installation_verdict into one verdict66 with the overall ok flag when shop head and hole fill both pass.677. Confirm the deterministic checks with the contract test68 scripts/test_solid_rivet_installation_quality.py.6970## Worked example7172A 4.0 mm protruding rivet over a 6.0 mm stack, driven head 5.8 mm73diameter by 1.8 mm height, flow stress 275 MPa, hole 4.08 mm.7475- Length, protruding: allowance = 1.5 * 4.0 = 6.0 mm, so the rivet76 length is 6.0 + 6.0 = 12.0 mm (select_rivet_length real output).77- Length, countersunk: allowance = 0.8 * 4.0 = 3.2 mm, length 9.2 mm.78- Shop head: d_over_d = 5.8 / 4.0 = 1.45, h_over_d = 1.8 / 4.0 = 0.45,79 both mid-band, ok True.80- Under-driven head 5.0 x 1.2 mm: d_over_d 1.25, h_over_d 0.30, ok81 False (under the 1.4 d and 0.4 d edges).82- Squeeze force: area = pi * 4.0^2 / 4 = 12.566 mm2; F = 1.5 * 275 *83 12.566 = 5183.6 N (real module output 5183.63 N).84- Hole fill: 4.08 - 4.0 = 0.08 mm clearance, within 0.1 mm, ok True;85 a 4.15 mm hole gives 0.15 mm, ok False.86- Combined: installation_verdict on the good head and 4.08 mm hole87 returns overall_ok True.8889## Verification9091- Confirm select_rivet_length(6.0, 4.0, "protruding") returns92 allowance 6.0 mm and length 12.0 mm, and the countersunk case 3.2 and93 9.2 mm; doubling the stack adds exactly the stack increment.94- Confirm shop_head_verdict(5.8, 1.8, 4.0) returns 1.45 / 0.45 ok True95 and (5.0, 1.2, 4.0) returns 1.25 / 0.30 ok False; band edges 1.4 d /96 0.4 d and 1.5 d / 0.5 d pass inclusively, and 1.6 d or 0.55 h fail.97- Confirm squeeze_force(4.0, 275) returns 5183.6 N within 0.1 N, and98 that the force scales with the diameter squared, linearly with flow99 stress and linearly with the factor.100- Confirm hole_fill_check(4.08, 4.0) passes at 0.08 mm, (4.15, 4.0)101 fails at 0.15 mm, and the exact 0.1 mm boundary passes (clearance102 limit is <=).103- Confirm every non-positive stack, diameter, dimension, flow stress or104 factor, every unknown head style, every hole at or below the rivet105 diameter (interference), and every negative max clearance raises106 ValueError.107- Run the contract test offline: python3108 scripts/test_solid_rivet_installation_quality.py (30 tests,109 deterministic).110111## Related leaves112113- manufacturing-quality/assembly/fastener-installation-quality: the114 threaded and lock-bolt sibling (grip, thread protrusion and clamp115 load checks); boundary is torque mechanics versus deformation116 fasteners, this leaf never applies torque-tension relations.117- manufacturing-quality/assembly/ewis-installation-quality: the wiring118 installation sibling in the same assembly pack.119120## Pitfalls121122- Sizing with the wrong head-style allowance: protruding heads take123 1.5 d and countersunk heads 0.8 d, so a countersunk rivet sized at124 1.5 d is 0.7 d too long and its shop head will not form to band.125- Judging a driven head on diameter alone: the shop head verdict needs126 both the diameter (1.4 to 1.5 d) and the height (0.4 to 0.5 d) in127 band - an over-formed diameter with an under-driven height is still128 a fail, and a head below either low edge is under-driven rather than129 acceptable.130- Treating the workmanship values as standard data: the 1.5 d / 0.8 d131 allowances, 1.4-1.5 d and 0.4-0.5 d bands, 1.5 flow-stress factor132 and 0.1 mm hole fill limit are documented typical practice in the133 same epistemic class as the threaded sibling's torque coefficient -134 confirm them against the governing process specification.135- Feeding an interference fit: a hole at or below the rivet diameter136 raises ValueError - interference fits are out of scope for this137 check, not something to score with a negative clearance.138- Applying torque-tension mechanics here: this leaf is the deformation139 fastener complement of fastener-installation-quality and never140 applies the F = T / (k * D) relation used for threaded and lock-bolt141 fasteners.142- Passing on one sub-check: the combined installation verdict requires143 the shop head and the hole fill to pass together, so a mid-band head144 with a 0.15 mm hole clearance is still an overall fail.145146## Behavior contract (gate 3)147148Run the deterministic contract test (stdlib unittest, offline):149150 python3 scripts/test_solid_rivet_installation_quality.py151152The test covers the worked-example anchors (12.0 mm protruding and1539.2 mm countersunk lengths, 1.45/0.45 ok and 1.25/0.30 fail shop head154verdicts, 5183.6 N squeeze force to 0.1 N, 0.08 mm pass and 0.15 mm155fail hole fill), the inclusive band edges and band symmetry identity,156the d^2, flow stress and factor scaling laws, the exact 0.1 mm hole157fill boundary, the combined installation verdict and its keys, run to158run determinism, and ValueError rejection of every non-physical input159listed in Verification.160161## Compliance162163- Standards referenced, not reproduced: AS9100 is cited as the process164 control frame (reference-only per standards-map.yaml); the workmanship165 factors and relations above are typical engineering practice,166 summary-only.167- compliance: STANDARDS-REF, gated: false.