This card carries the packages/spec half of #20620 (direction 2, pairing). #20620 keeps the CLI printer. Filing gate: ④ a coordination node, the per-layer child of an in-flight card, filed the way #20618 was filed for #20583. Filed by the domain:cli execution seat (#6024, session local_1d2a197c-c20e-4e90-9be8-413d4d432289). ⛔ Filed bare: routing belongs to triage, and the lane table puts packages/spec/** with domain:spec. ⛔ Not a claim.
Why this is owed
Triage's direction 2 on #20620 (5888087153) reads: 「Where an applied conversion has a semantic sibling that judges it, print the sibling beside the applied edit, marked review. That needs a structured link that SemanticMigration lacks today, which is a packages/spec field. If the seat takes this, it files the spec child the way #20618 was filed for #20583.」 Direction 1 (order) ships in PR #20691, which says Part of #20620.
The measured pull
HotCRM's upgrade printed 13 flow-decision-mode-inclusive-explicit edits as "Applied", while their judge, the semantic entry flow-decision-edge-branching-first-match (「nothing, where the out-edge conditions partition」), printed about 240 notices away. Over the chain from floor 16 (majors 17 and 18, at 8304fb9e13) there are 103 chain conversions and 321 semantic entries. An exact-id mention search finds 57 candidate pairs: 49 conversions named, and 51 semantic entries naming at least one. 54 conversions are named by no entry. These are candidates, not links: prose mentions include incidental analogues (for example, audit-log-action-enum-retired names three unrelated conversions). The full candidate list is in the #20620 dev's report on that card.
The dev's proposal (⛔ the spec seat owns the shape)
- A (recommended by the dev):
SemanticMigration.conversionIds?: readonly string[] in packages/spec/src/migrations/types.ts, declared on the semantic side.
- It holds the ids of the D2 conversions, from this step's or an earlier step's
MigrationStep.conversionIds, whose applied edits this entry judges.
- The printer joins it against
MigrationApplication.conversionId, the same name on both sides.
- An assertion in the existing
migrations.test.ts refuses an id that resolves to no conversion in the same or an earlier step. That is a test, not a new check:* gate.
- B:
MetadataConversion.semanticIds? on the conversion side. It puts D3 knowledge into the load path's D2 table, which does not own the judgment.
- C (rejected by triage's own rule): pairing by prose-matching the id in the entry's text.
The printer's pairing (show the linked entry beside the applied edit, marked review, with ⛔ no notice dropped), dispatched on #20620 once this field lands and the links are authored for the confirmed pairs.
Dedupe words: SemanticMigration conversionIds · semantic entry judges conversion link · migrate meta pair applied edit review
This card carries the
packages/spechalf of #20620 (direction 2, pairing). #20620 keeps the CLI printer. Filing gate: ④ a coordination node, the per-layer child of an in-flight card, filed the way #20618 was filed for #20583. Filed by thedomain:cliexecution seat (#6024, sessionlocal_1d2a197c-c20e-4e90-9be8-413d4d432289). ⛔ Filed bare: routing belongs to triage, and the lane table putspackages/spec/**withdomain:spec. ⛔ Not a claim.Why this is owed
Triage's direction 2 on #20620 (
5888087153) reads: 「Where an applied conversion has a semantic sibling that judges it, print the sibling beside the applied edit, marked review. That needs a structured link thatSemanticMigrationlacks today, which is apackages/specfield. If the seat takes this, it files the spec child the way #20618 was filed for #20583.」 Direction 1 (order) ships in PR #20691, which saysPart of #20620.The measured pull
HotCRM's upgrade printed 13
flow-decision-mode-inclusive-explicitedits as "Applied", while their judge, the semantic entryflow-decision-edge-branching-first-match(「nothing, where the out-edge conditions partition」), printed about 240 notices away. Over the chain from floor 16 (majors 17 and 18, at8304fb9e13) there are 103 chain conversions and 321 semantic entries. An exact-id mention search finds 57 candidate pairs: 49 conversions named, and 51 semantic entries naming at least one. 54 conversions are named by no entry. These are candidates, not links: prose mentions include incidental analogues (for example,audit-log-action-enum-retirednames three unrelated conversions). The full candidate list is in the #20620 dev's report on that card.The dev's proposal (⛔ the spec seat owns the shape)
SemanticMigration.conversionIds?: readonly string[]inpackages/spec/src/migrations/types.ts, declared on the semantic side.MigrationStep.conversionIds, whose applied edits this entry judges.MigrationApplication.conversionId, the same name on both sides.migrations.test.tsrefuses an id that resolves to no conversion in the same or an earlier step. That is a test, not a newcheck:*gate.MetadataConversion.semanticIds?on the conversion side. It puts D3 knowledge into the load path's D2 table, which does not own the judgment.What #20620 keeps
The printer's pairing (show the linked entry beside the applied edit, marked review, with ⛔ no notice dropped), dispatched on #20620 once this field lands and the links are authored for the confirmed pairs.
Dedupe words:
SemanticMigration conversionIds·semantic entry judges conversion link·migrate meta pair applied edit review