Repository navigation
Add Lotes AZIFA072 socket body as resolved LGA4926 constituent - #9061
Conversation
… pattern with it
extdeps.cpu_attachment.ilm4926 has carried three unresolved socket-body axes
since it was written -- vendor, orderable part number, board land pattern --
with lga4926_land_pattern_public_route naming exactly what to ask Lotes for:
"the socket-body part number that mates with AZIF0222, then its customer drawing
or recommended PCB layout". Lotes answered. This lands that answer.
AZIFA072-P001CCS, drawing GAP-AZIFA072 rev 2 (ECN N230045), 5 sheets. It gets
its own module rather than folding into ilm4926: two orderable parts from one
vendor are two independently versioned subjects, so a revision of this drawing
must not require editing the designation module. The designation module keeps
what is still open -- no cited document expands the initialism, and a part
number does not retroactively expand one.
The geometry is extracted from the drawing's own vector content and
cross-validated against the supplied STEP solid by an independent path. Neither
extraction consulted the other:
array extent PDF 63.449 x 75.470 mm STEP 63.44 x 75.47 mm
pad count callout 4926 drawn elements 4926
ball diameter callout 0.52 modelled sphere radius 0.26
positions 642 of the 650 balls the STEP models land within 0.25 mm of an
extracted pad; median deviation 0.019 mm
The 4926 centres are committed as an artifact beside the drawing because they
are not derivable from the lattice parameters: the array has a central void and
splits into two banks whose X phases differ, and filling the outline the STEP
carries overshoots by 359 positions.
Running the model is what caught the one real defect in this change. When the
last citation landed, attachment_footprint_may_emit flipped from refusing to
permitting -- while the stencil aperture was unread, the Pin 1 corner unlocated
and the mask opening unidentified. Established is not complete: establishment is
a property of a fact's grounding, releasability is a property of a deliverable's
completeness, and a gate reading only the first permits as soon as the paperwork
is done. Folding the gaps into that predicate was tried first and was worse --
it made a predicate over an arbitrary AttachmentStanding false for every input
including its own synthetic positive control, which is a decoration rather than
a strict gate. So the two questions are separated: attachment_footprint_may_emit
stays flippable with its RED and GREEN controls intact, and
lga4926_footprint_may_release refuses while azifa072_open_gaps stands.
Three witnesses inverted and are updated rather than deleted, each keeping the
pairing that carries the content: the socket body is now identified WHILE the
designator stays unexpanded; the two constituents resolve to DIFFERENT
authorities though both are Lotes; and the standing gate opens WHILE the release
gate refuses.
Measured, not inspected: both modules and the downstream attachment_stack
consumer compile with 0 blocking errors, and every claim the updated witnesses
assert was executed against the real modules and returned true, with the
standing gate and the release gate disagreeing -- which is what makes the
conjunction load-bearing rather than decorative.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HufBEsw4eqxSnEtBZ5re5a
…parser truncation Three corrections to the socket-body module, two found by re-reading the diff against DESIGN and one found by executing it. TYPED CARRIERS REPLACE PROSE. Two String rows carried machine-consumed facts as sentences, which is the modelling debt section 4c names: a note claiming "359 positions are depopulated" is a claim no lens can see and no reader can check. The fill discrepancy becomes LatticeFillDiscrepancy with the counts as fields and a derived identity over them, and carriability becomes a DocumentCarriage coproduct beside the route types ilm4926 already uses for the same distinction. The remaining String in the module is the one whose content genuinely is prose. THE GATE'S RUNG IS STATED, NOT IMPLIED. Both footprint predicates carried a comment calling them "the predicate a footprint emitter consults". Measured: no footprint emitter exists in the tree, and the only consumers of either function are the witnesses. The predicates are real and answer correctly; what is absent is anything obliged to ask. Claiming otherwise is the specification-without-execution failure wearing the vocabulary of a wall, so both now state the honest rung -- mitigatable, prevented by review rather than by construction -- and name the next-rung trigger: the first caller in product.pcb.footprint that turns a land pattern into pads. A LEADING `-` ON A CONTINUATION LINE SILENTLY DISCARDS AN OPERAND. The arithmetic identity added above returned FALSE with every number correct. The parser ends an expression at the newline and reads `- x` as a fresh statement applying unary minus: `100` / `- 1` is -1, while `100` / `+ 1` is 101 and `100` / `* 3` is 300, and a trailing `-` continues correctly. Only `-` is affected, because only `-` has a unary form that can begin a statement -- the automatic-semicolon hazard. This is silent wrongness, which section 5 places outside the ladder rather than low on it: total, type-correct, zero diagnostics at any severity, and invisible to a reviewer reading the source that produced it. It was caught only by executing the check and disagreeing with it. Corpus exposure measured at zero -- of thirteen leading-`-` continuations, twelve are markdown bullets inside string literals and the thirteenth was this one -- but the style the hazard punishes is house style, so the class is open even though no instance survives. The parser is deliberately NOT fixed here: v1's admission test is service to the v2 self-host program, and a statement-boundary change needs its own review against v2's grammar rather than a drive-by in a socket-geometry change. The instance is repaired by parenthesising on one line with the reason recorded at the call site, and the class, its reduced cases, its blast radius and its fail-closed next rung are in docs/probes/leading_minus_continuation_silently_truncates_2026-08-23.md. Measured: the gating CI job passes on this tree -- claim_executor --required-cited-symbol reports OK, checked=390, exit 0 -- and all six claims of the corrected modules were executed and returned true, including the arithmetic identity that was silently false before this commit. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HufBEsw4eqxSnEtBZ5re5a
…endor's drawing The witness floor went red on f50d63e. Fifteen failures, and the split is the point: six are this PR's and nine are main's, which fails the same job at this PR's exact merge base 00ad29e while importing nothing this diff touches. WHAT THIS PR BROKE, AND WHY THAT IS THE SUBSTRATE WORKING. Establishing a fact that had been unresolved since ilm4926 was written inverted every downstream assertion encoding "this is still open": four in altra_attachment_stack_witness, one in altra_pcb_world_svg_witness, one in ilm4926_designation_witness. Each is repaired to assert what is now true while keeping the claim it defends, rather than deleted or weakened to a tautology. w_a_public_package_does_not_establish_ the_board_land_pattern now asserts both facts are established by DIFFERENT authorities, so it still fails if anyone derives board pads from the package underside -- the category error that module's header exists to prevent. The scene-label witness asserts the land-pattern label is ABSENT and keeps the count conjunct tying emitted labels to the obligation population, so the test cannot quietly weaken as layers resolve. The pcb_world witness asserts obligations still exist for other layers, because asserting only the land pattern's absence would pass on an empty obligation list -- an empty-observation narrow, which is worse than the widen DESIGN forbids. A LATENT BUG OLDER THAN THIS CHANGE. carriage_for_board_land_pattern_fact mapped FactEstablished to CarriageNotApplicable, which authority_standing_refusal directly contradicts: EstablishedFactHasInapplicableCarriage exists precisely because an established fact always has a carriage answer. The two functions disagreed for as long as the arm existed and nothing detected it, because no input could reach the arm while the land pattern was unresolved. This is reachability-read-as-occupancy from the unusual direction -- not a live guard deleted for being quiet, but an unreachable arm that went unexamined and was simply wrong. NormalizedFactsMayBeCarried is the correct answer by the type's own definition: the normalized numerical facts are admitted and the vendor's expression of them is not. THE VENDOR'S DRAWING IS REMOVED, AND THE REASON IS NOT SIZE. RepositoryCarriageStanding has three arms rather than four, and the absent one is SourceExpressionMayBeCarried: copying a vendor's PDF, figure, prose or table layout is refused for EVERY subject by repository policy rather than chosen per subject. The previous commit committed one. The operator's clearance covered CONFIDENTIALITY -- there is no NDA on this part -- which is a different question from whether this repository carries a vendor's expression of its own facts; both had to hold and only the first was checked. The extracted positions and dimensions stay, because those are exactly what the surviving arm admits. The citation now names the route to the drawing with the document's exact identity beside it, the same shape this repository already uses for Customer Connect: a locator for the route, not for the bytes. No geometry changed. Every extracted number stands unaltered. VERIFICATION STATE, STATED HONESTLY. The six repairs are derived from a measured baseline -- a full local floor over the pre-repair tree, whose fifteen failures are the list above -- and each repair targets a named failure in it. A full floor over the REPAIRED tree was still in its compile phase when this was committed, so these fixes are reasoned from measurement rather than confirmed by re-measurement; a follow-up lands if it disagrees. This PR's job will stay red either way until main recovers, since the floor runs the whole corpus and nine of its failures are main's. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HufBEsw4eqxSnEtBZ5re5a
minimal_design already selects the channel count against DesignIntent, because the datasheet documents the one- and two-channel populations as engineering debug and the same count is therefore admissible for bring-up and refused for production. Every other requirement ignored that distinction: required_roles returned the identical thirteen non-slot roles whichever intent produced the design, so a bench fixture was obliged to carry a host network PHY, an out-of-band management path and an NVMe endpoint, none of which is on any path required to bring the processor out of reset. An intent that governs one axis and is silent on the rest is not a modelled intent. Measured, on the real designs rather than on a fixture: 17 required roles under Production, 14 under EngineeringBringUp, difference exactly 3, with the memory slot count unchanged at 4 on both. The two mechanisms compose rather than double-count -- changing intent alone, topology held fixed, adds and removes no slot. THE BASIS IS TYPED BECAUSE TWO KINDS OF CLAIM MUST NOT BLUR. The channel-count gate is backed by Ampere's own datasheet. Nothing in this classification has that backing: that a fixture may omit host networking is this repository's design judgement. RoleRequirementBasis therefore separates VendorProductionEnvelope, which must name an authority, from RepositoryDesignPolicy, which must state its reason. Every row landed here is the second kind, and a reader can tell without trusting the author. role_requirement is total over BoardComponentRole, so a new role cannot be added without deciding its necessity here rather than inheriting whichever default a wildcard named -- the total-at-the-level-examined failure DESIGN describes. Intent is applied in exactly one place, so adding a DesignIntent breaks requirement_applies_under loudly instead of silently resolving in fourteen arms. A first draft classified DebugConnector as bring-up-only. That was wrong and is recorded at the row rather than quietly fixed: DebugAccess is a named BoardRequirementIdentity in realization.dag, so the requirements model already recognises debug as a board requirement, and asserting a production Altra server is not owed debug access is a claim no cited document supports. Correcting it left RequiredOnlyUnderBringUp with no production occupant, which is a quiet arm rather than a dead one -- and the distinction is settled by execution, not opinion: w_red_the_bring_up_only_arm_is_reachable_and_discriminates plants one and drives it both ways, because an arm whose red no input could produce would be a decoration cited as coverage. Four witnesses, each asserting a pairing rather than a single side: the three features drop AND the count moves by exactly three in both directions; every role that is not one of those three survives the bring-up gate, folded over the whole coproduct so a future "minimisation" of the power-good supervisor fails without anyone naming it; the unoccupied arm discriminates; and the slot count is untouched. Verified by execution: placement and the witness module compile with 0 blocking errors, claim_executor --required-cited-symbol reports OK checked=390 exit 0, and every claim above was run against the real modules and returned true. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HufBEsw4eqxSnEtBZ5re5a
|
HOLD — do not merge during the #9102 → #8282 window. Computed against #8282's changed-file set: this PR intersects it on 7 file(s), including:
Under the operator's #9059 ruling — "not a category judgment about emission work; it is a direct subject-overlap constraint" — an intersecting PR must not land between the prerequisite (#9102) and the cut cohort (#8282): it alters the cut's conflict set and invalidates its prepared subject. Nothing is wrong with this change and its approvals stand. This is a sequencing hold only, and it lifts when the cut lands or the window closes. Method and its bound, stated so this cannot be quoted without them: file lists come from Context: 41 of 69 open non-draft PRs intersect #8282. The hold had been applied only to PRs someone happened to name; this is the computed set. Two of us have already been caught not applying it to our own PRs. — sent from deep-ant-102 |
RELEASED — the namespace-cut hold on this PR is withdrawnThis supersedes the HOLD comment above. Normal merge policy resumes for this PR. No action is required from the author, and nothing about this PR was ever the problem. Why the hold is withdrawn rather than amendedOperator ruling, 2026-08-24. Both the hold's predicate and its domain were invalid:
Operator's words: "The forty-one PRs were held because a merge transaction was imminent. That transaction no longer exists. The possibility of a future transaction is not a present hold." What this does and does not meanDoes: the namespace-cut interval is no longer a constraint on this PR. Does not: mean this PR must merge. Ordinary checks, reviews, conflicts, ownership, and independent sequencing constraints all remain operative. #8282 itself remains excluded and stays draft. If this PR touches
|
Summary
Resolves the unresolved LGA4926 socket-body constituent by introducing the Lotes AZIFA072-P001CCS orderable part as a separately versioned, independently authored subject. This closes the decomposition left open in
extdeps.cpu_attachment.ilm4926, which had resolved only the ILM + backplate assembly (AZIF0222) but not the socket body that receives the processor and solders to the board.Key Changes
New module
extdeps.cpu_attachment.lotes_azifa072: Declares the socket-body part with its own authority anchor, drawing authority, and footprint release authority. Follows the design principle (§3, external upstream decomposition) that two orderable parts from one vendor are two subjects, not one, and therefore require independent versioning and authority.Documentation: Added
docs/extdeps/lotes_azifa072/README.mdexplaining provenance, the distinction between this part and AZIF0222, and the board land pattern closure. Includes customer drawing PDF and derived pad array/footprint data (SVG and CSV).Test integration: Updated
dag/test/claim/ilm4926_designation_witness_test.dagto import and exercise the new module's authorities and footprint release predicate.Upstream reference: Updated
dag/extdeps/cpu_attachment/ilm4926.dagto import the new Lotes module, establishing the link between the designation (which names both constituents) and this independently versioned socket-body subject.Implementation Details
The module models the socket body as a distinct Hardware subject with its own
ExternalAuthority(Lotes), separate from the retention assembly. This allows the drawing and footprint to be versioned independently—a revision of the socket-body drawing does not require editing the designation module, preserving the single-authority principle (§3) and minimizing redundancy (§2).The footprint release authority (
lga4926_footprint_may_release) is declared here rather than in the designation module, since it is specific to this orderable part's board interaction, not to the ILM designation itself.https://claude.ai/code/session_01HufBEsw4eqxSnEtBZ5re5a