feat(ms-ai-architect): #30 ratifisert — programmet falsifiserte sitt eget ferske tall paa ett doegn [skip-docs]

idx-26aw anvendt. Ordtellings-feltet er slettet; korpuset har naa null
ordtellings-felt.

#30 ER EN NY FORM, IKKE EN ARV FRA #29. Widening-en ble lagt fram som eget
spoersmaal, med «la staa aapen» paa stemmeseddelen — nettopp fordi
naboskaps-arv er den stille utvidelsen #22 nektet for idx-26ar og #26 nektet
for den umerkede kjoeringen. Formen: et footer-/metadatafelt som oppgir en
MAALBAR EGENSKAP VED FILA SELV som ingen mekanisme holder sann -> slett linja.
#29 er byte-storrelse-instansen; #30 er grunnen uttalt i den bredden evidensen
baerer.

GRUNN (3) ER IKKE LENGER ET ARGUMENT, MEN EN OBSERVASJON. Entryen og STATE sa
begge wc -w = 3374. Det er 3369. De fem ordene er «- **File size:** ~29 KB»,
som #29 slettet fra DENNE SAMME FILA forrige oekt (35ac933). Programmet
falsifiserte sin egen ferske ordtelling inne i ett doegn, ved aa gjoere det
arbeidet formen styrer. En rettelse til «~3370» ville vaert usann igjen ved
neste edit — idx-26v-faren #29 navnga. Feilen mot paastanden er 5,3 %, ikke
5,2 %.

GRENSEN BLE MAALT FOER SPOERSMAALET BLE STILT, fordi den videste lesningen av
«selv-invaliderende» er langt storre enn klassen. «**Last updated:**» staar i
385 filer og falsifiseres av en senere edit paa noeyaktig samme maate — og er
IKKE naadd av formen, paa to maalte grunnlag: feltet er kontraktspaalagt
(buildHeader emitterer det, validateKbFile krever det) og re-stemples av
/architect:kb-update ved hver refresh (commands/kb-update.md:24, :192). Det har
en vedlikeholdsmekanisme; ordtelling og filstorrelse har ingen.
EN KANDIDATGRENSE BLE TESTET OG FORKASTET, ikke baaret videre:
backfill-last-updated.mjs ble foerst antatt aa vaere mekanismen, og er det
ikke — den er en EN-FILS backfill (decision-trees.md).

KLASSEN MAALT MED TRE UAVHENGIGE NETT, ikke med det ene ordet entryen brukte:
(1) navngitte varianter (Word count / Ordtelling / Antall ord / Words /
Ordantall / Lengde); (2) case-insensitiv «word count»; (3) full enumerasjon av
ETHVERT bold-label-felt med tallverdi i alle 394 skills/**/*.md, gruppert paa
etikett. Det tredje nettet er det eneste som kan se et felt ingen gjettet
navnet paa: ingen line count, character count, sidetall, seksjonstelling eller
lesetid finnes. Klassen er EN under hvert nett.

#22s PROMOTE-KLAUSUL FYRER IKKE, sjekket og ikke antatt: den er betinget av at
ETIKETTEN slettes, og «**Document metadata:**» er keep-class per #22s
label-regel. Den staar naa over en enkelt linje, som ingen ratifisert form
behandler som defekt.

KEEP-NABOEN RE-MAALT, IKKE ARVET: «- **Unique sources:** 10 Microsoft Learn
URLs» er SANN — 10 distinkte learn.microsoft.com-URLer etter /en-us-
normalisering (11 raa, en gjentakelse).

Ko: 57 entries (9 aapne, 48 resolved). Suite 1052/1052. Alle ti formers
GOVERNS opploeser mot eksisterende, resolvede entries. Hel-linje-bevis: slettet
linje 0 forekomster korpus-bredt, bevart linje 1x, fila ender fortsatt paa
newline.

[skip-docs]: ingen brukerrettet doc-impact. En linje slettet inne i en
eksisterende ref-fil — ref-docs er fortsatt 389, saa README-badgen og
CLAUDE.md-tellingen staar uendret. Ingen ny kommando, agent, skill eller hook.
This commit is contained in:
Kjell Tore Guttormsen 2026-08-12 22:25:16 +02:00
commit 931425a002
2 changed files with 5 additions and 4 deletions

View file

@ -16,7 +16,8 @@
"#26": "AN UNLABELLED TRAILING FOOTER RUN. Ratified 2026-08-12, SCOPED TO ONE FILE.\nSCOPE FIRST, because the scope is the whole decision: this governs ai-impact-assessment-framework.md:651-653 and nothing else. #22's timestamp clause says INSIDE THE BLOCK, and its precedent (idx-26ac, applied 2026-08-12) deleted a timestamp that sat under the label \"**MCP-research metadata:**\". This run carries no heading and no label above it, so #22 does not reach it and could not be made to without the silent widening #22 itself refused.\nTHE FORM: where a file ends in a run of sibling \"**Label:** value\" lines with no heading and no label above them, and EVERY line in the run fails idx-26j's referent test, the run is deleted whole.\nMEASURED LINE BY LINE, not inherited: \":651 **Sist oppdatert via MCP:** 2026-02-04\" is when the generation ran; \":652 **MCP-kilder brukt:** microsoft-learn (docs.microsoft.com, microsoft.com/ai)\" is which tool was used and carries no number at all; \":653 **Antall dokumenter sokt:** 4 (search queries) + 2 (deep fetch)\" puts a document label over values that count operations - a search query is not a document. All three referents are the generation. Nothing countable against the file is in the run: the file's sources are the numbered lists above, untouched, as is the \"**Confidence markers:**\" block.\nWHY THE RUN AND NOT THE COUNTING LINE ALONE: :653 is the only member inside the 58 counting class, so the narrow edit was available. It would have left two lines with the same referent immediately above the edit - the residue class G7 exists for, caught at the edit site this time rather than by a later sweep.\nWHAT STAYS OPEN: the general class - an unlabelled run, and an enumeration with no count - remains open at idx-26ar. This form is an instance, not the class, and a second instance must come back as a question rather than inherit it.\nGOVERNS: idx-26ah.",
"#27": "A REFERENT WORD THE FIELD NAME ALREADY CARRIES. Ratified 2026-08-12.\nTHE FORM: where a count line names a referent in its VALUE that contradicts the count, while the FIELD NAME already states the correct referent, delete the contiguous referent words from the value and leave the rest byte-identical. The count is untouched.\nTHE INSTANCE, agent-to-agent-a2a-protocol.md:732. \"**Total sources cited:** 10 unike URLer fra MCP-research + tavily-research\" -> \"**Total sources cited:** 10 fra MCP-research + tavily-research\". Deleted: \" unike URLer\", 12 contiguous characters. The three #25 conditions all hold and were measured, not assumed: the remainder is grammatical; 10 is grounded in the 10 numbered entries the file lists; zero words are authored.\nWHY IT IS NOT #25, which is the reason this needed its own ratification rather than inheritance: #25 removes a DELETE-CLASS count restated in-line. Nothing removed here is a count at all, and nothing in the line has the generation as its referent. The conditions transfer; the scope does not.\nWHY IT IS NOT #21, and this is where the session that arrived here was wrong on a premise rather than on a judgement. STATE asserted this line was word-for-word idx-26w and therefore already governed. MEASURED FALSE: idx-26w reads \"fra MCP-research\" alone, this line reads \"fra MCP-research + tavily-research\". #21 fires only on an OVERCLAIMING provenance qualifier, and this qualifier does not overclaim - it names the web-research leg covering exactly the four non-Learn URLs (a2a-protocol.org x2, linuxfoundation.org, developers.googleblog.com). idx-26w own summary had already said so in writing. The provenance is sound here; the defect is the referent of the count.\nTHE MEASUREMENT THAT MADE IT A DELETION: 10 numbered source entries, 11 distinct URLs, because entry 8 carries two. So \"10\" is true as sources and false as unique URLs, and the line asserted both. Correcting 10 to 11 was available and was NOT taken - deletion of the wrong referent costs nothing, because the field name \"Total sources cited\" already says which one is meant.\nGOVERNS: idx-26t.",
"#28": "A KEEP-CLASS COUNT WHOSE TRUE HALF IS BOTH TRUE AND UNIQUE. Ratified 2026-08-12. This is the residual case #23 explicitly declined to ratify and sent back as a new question; this is its first instance, and it is decided rather than inherited.\nTHE FORM: where a keep-class line carries several counts, some measured FALSE and at least one measured TRUE, and that true part is NOT restated anywhere else in the file, CORRECT the false numbers to their measured values. Do not delete the line.\nTHIS IS THE PROGRAMME FIRST AUTHORED NUMBER, and the operator decided it deliberately on 2026-08-12. Until now every resolution deleted, on the idx-26v ground that a repair must not author the defect class it closes. That ground still holds where deletion is FREE - which is why idx-26t, decided in the same session, deletes. It stops holding where deletion destroys a true and unique claim, because then silence is not the cheap option, it is a second defect.\nTHE INSTANCE, rag-document-preprocessing.md:791 (the entry evidence and STATE both said :792 - off by one; the anchor is verbatim text, so nothing depended on it). \"8 Microsoft Learn-artikler + 4 GitHub-repos = **12 kilder**\" -> \"8 Microsoft Learn-artikler + 2 GitHub-repos = **10 kilder**\".\nMEASURED, and the population was re-checked after the edit rather than assumed: 8 distinct learn.microsoft.com articles after /en-us normalisation (TRUE as written), 2 distinct github.com URLs (NOT 4), therefore 10 named source URLs (NOT 12). The three azure.microsoft.com pricing URLs are excluded because the line states its own referent - Learn articles plus GitHub repos - and never claimed to cover them.\nTHE POPULATION CHECK THAT COULD HAVE INVALIDATED THIS: the file does not end at the footer - a further section runs :795-803 - so the footer might have been a section total measured over the wrong span. Measured: ZERO Learn or GitHub URLs occur after :791. All 11 occurrences precede it. The count covers what it claims.\nTHE LIMIT: this form applies only where the true part is BOTH true AND unique. Where the true part is restated elsewhere, deletion remains free and #23 governs. Where every part is false, #24 governs. A keep-class count that is merely unverifiable, rather than measurably wrong, is not reached by this form at all - that is still the idx-26j class.\nGOVERNS: idx-26at.",
"#29": "A FILE-PROPERTY FIELD THAT NO EDIT CAN KEEP TRUE. Ratified 2026-08-12.\nSCOPE FIRST, and the scope was MEASURED BEFORE THE QUESTION WAS PUT rather than after - the discipline idx-26j's scope addendum named after booking stopped at 7 of 21. Only idx-26u was booked, but \"**File size:**\" occurs in THREE files corpus-wide, and the operator ratified the form over all three in one decision instead of over the one that happened to be on the queue.\nTHE FORM: where a footer or metadata field states a physical property of the file itself - its byte size - DELETE THE LINE. Nothing is authored and nothing is renamed.\nTHE GROUND, and it is NOT #22's ground. #22 deletes because nothing can adjudicate the claim; git adjudicates this one exactly, which is why the form needed its own ratification and why idx-26u's own inheritance argument (\"deletion follows from idx-26j rather than requiring a new ratification\") was NOT accepted - the same premise type this programme falsified twice on 2026-08-12. Three grounds, each measured:\n (1) EVERY PART IS FALSE, so there is no true half to preserve. #28 sends this case onward in its own words: \"Where every part is false, #24 governs.\"\n (2) DELETION COSTS NO TRUE INFORMATION. A byte size has no use in a knowledge-base reference file and is trivially measurable by anyone who wants it. STATE's rule - delete where deletion is free, correct where deletion costs true and unique information - lands on delete.\n (3) THE ONLY AVAILABLE REPAIR IS SELF-INVALIDATING. Restating \"~18 KB\" writes a line that the very next edit to the file makes false again. That is not a repair; it is authoring a future instance of the defect class being closed - the idx-26v hazard in a new costume.\nMEASURED, all three, against the working tree: azure-cost-management-ai.md:295 claimed ~14 KB against 18499 bytes (18.0 KB, 29% off); budget-forecasting-ai-projects.md:530 claimed ~14 KB against 20001 bytes (19.5 KB, 39% off); agent-evaluation-testing-frameworks.md:565 claimed ~29 KB against 27864 bytes (27.2 KB, 6.6% off - defensible under the tilde, and deleted anyway BECAUSE THE GROUND IS THE FIELD TYPE, NOT THE SIZE OF THE ERROR). idx-26u's git history is the strongest form of ground (1): the line read ~14 KB in the EARLIEST version the repo can observe (baa2d02, 17388 bytes) and at every commit since, so it was never true at any observable point.\nONE CORRECTION TO idx-26u's OWN EVIDENCE, made before the form was applied: the entry recorded \"the working tree today is 18554\". It is 18499 - commit 30d4340 touched the file after the entry was written. The conclusion is unchanged; the number was re-measured rather than carried forward.\nEXPLICITLY NOT COVERED, booked rather than swept: \"- **Word count:** ~3200 ord\" at agent-evaluation-testing-frameworks.md:564 sits DIRECTLY ABOVE one of the deleted lines and is arguably the same self-invalidating class (measured: ~3200 against 3374 actual, 5.2% off). It was NOT in the ratification question, so extending this form to it would be the silent widening #22 refused and #26 refused after it. Booked as idx-26aw, open. It is the only word-count field in the corpus.\nTHE SURVIVING KEEP-CLASS NEIGHBOURS WERE MEASURED, NOT ASSUMED, since a deletion that leaves a false line behind is the residue class G7 exists for. All three are TRUE under the /en-us/ normalisation #28 established: \"**Total sources:** 8 unique Microsoft Learn URLs\" (8 distinct articles, 9 raw strings - the header **Source:** at :7 repeats tutorial-acm-create-budgets without the locale), \"**Unique sources:** 8 Microsoft Learn URLs\" (8 of 9), \"- **Unique sources:** 10 Microsoft Learn URLs\" (10 of 11). Nothing was booked against them.\nTHE LABEL \"**Document metadata:**\" IS KEPT UNCHANGED, per #22's label rule: its words name content, not the generation, so it is the \"Research Coverage\" case rather than the \"MCP Calls\" case. It still labels two surviving lines.\nGOVERNS: idx-26u, idx-26au, idx-26av."
"#29": "A FILE-PROPERTY FIELD THAT NO EDIT CAN KEEP TRUE. Ratified 2026-08-12.\nSCOPE FIRST, and the scope was MEASURED BEFORE THE QUESTION WAS PUT rather than after - the discipline idx-26j's scope addendum named after booking stopped at 7 of 21. Only idx-26u was booked, but \"**File size:**\" occurs in THREE files corpus-wide, and the operator ratified the form over all three in one decision instead of over the one that happened to be on the queue.\nTHE FORM: where a footer or metadata field states a physical property of the file itself - its byte size - DELETE THE LINE. Nothing is authored and nothing is renamed.\nTHE GROUND, and it is NOT #22's ground. #22 deletes because nothing can adjudicate the claim; git adjudicates this one exactly, which is why the form needed its own ratification and why idx-26u's own inheritance argument (\"deletion follows from idx-26j rather than requiring a new ratification\") was NOT accepted - the same premise type this programme falsified twice on 2026-08-12. Three grounds, each measured:\n (1) EVERY PART IS FALSE, so there is no true half to preserve. #28 sends this case onward in its own words: \"Where every part is false, #24 governs.\"\n (2) DELETION COSTS NO TRUE INFORMATION. A byte size has no use in a knowledge-base reference file and is trivially measurable by anyone who wants it. STATE's rule - delete where deletion is free, correct where deletion costs true and unique information - lands on delete.\n (3) THE ONLY AVAILABLE REPAIR IS SELF-INVALIDATING. Restating \"~18 KB\" writes a line that the very next edit to the file makes false again. That is not a repair; it is authoring a future instance of the defect class being closed - the idx-26v hazard in a new costume.\nMEASURED, all three, against the working tree: azure-cost-management-ai.md:295 claimed ~14 KB against 18499 bytes (18.0 KB, 29% off); budget-forecasting-ai-projects.md:530 claimed ~14 KB against 20001 bytes (19.5 KB, 39% off); agent-evaluation-testing-frameworks.md:565 claimed ~29 KB against 27864 bytes (27.2 KB, 6.6% off - defensible under the tilde, and deleted anyway BECAUSE THE GROUND IS THE FIELD TYPE, NOT THE SIZE OF THE ERROR). idx-26u's git history is the strongest form of ground (1): the line read ~14 KB in the EARLIEST version the repo can observe (baa2d02, 17388 bytes) and at every commit since, so it was never true at any observable point.\nONE CORRECTION TO idx-26u's OWN EVIDENCE, made before the form was applied: the entry recorded \"the working tree today is 18554\". It is 18499 - commit 30d4340 touched the file after the entry was written. The conclusion is unchanged; the number was re-measured rather than carried forward.\nEXPLICITLY NOT COVERED, booked rather than swept: \"- **Word count:** ~3200 ord\" at agent-evaluation-testing-frameworks.md:564 sits DIRECTLY ABOVE one of the deleted lines and is arguably the same self-invalidating class (measured: ~3200 against 3374 actual, 5.2% off). It was NOT in the ratification question, so extending this form to it would be the silent widening #22 refused and #26 refused after it. Booked as idx-26aw, open. It is the only word-count field in the corpus.\nTHE SURVIVING KEEP-CLASS NEIGHBOURS WERE MEASURED, NOT ASSUMED, since a deletion that leaves a false line behind is the residue class G7 exists for. All three are TRUE under the /en-us/ normalisation #28 established: \"**Total sources:** 8 unique Microsoft Learn URLs\" (8 distinct articles, 9 raw strings - the header **Source:** at :7 repeats tutorial-acm-create-budgets without the locale), \"**Unique sources:** 8 Microsoft Learn URLs\" (8 of 9), \"- **Unique sources:** 10 Microsoft Learn URLs\" (10 of 11). Nothing was booked against them.\nTHE LABEL \"**Document metadata:**\" IS KEPT UNCHANGED, per #22's label rule: its words name content, not the generation, so it is the \"Research Coverage\" case rather than the \"MCP Calls\" case. It still labels two surviving lines.\nGOVERNS: idx-26u, idx-26au, idx-26av.",
"#30": "A MEASURABLE FILE PROPERTY THAT NO MECHANISM MAINTAINS. Ratified 2026-08-13. This is the widening of #29's ground that #29 itself refused to take silently, and it was put as its own question.\nTHE FORM: where a footer or metadata field states a MEASURABLE PROPERTY OF THE FILE ITSELF - its byte size, its word count - and no mechanism in this repository keeps that value true, DELETE THE LINE. Nothing is authored and nothing is renamed. #29 is the byte-size instance of this form; #30 is the ground stated at the width the evidence supports.\nTHE BOUNDARY, MEASURED BEFORE THE QUESTION WAS PUT, because the widest reading of \"self-invalidating\" is far larger than the class and would have swept the corpus. \"**Last updated:**\" occurs in 385 files and a later edit falsifies it exactly as it falsifies a word count - it is NOT reached by this form, on two measured grounds: it is contract-mandated (buildHeader emits it; validateKbFile requires it) and it is actively re-stamped by /architect:kb-update on every refresh (commands/kb-update.md:24, :192). It has a maintaining mechanism; a word count and a byte size have none. \"**Document version:** 1.0\" is likewise outside: a version string is a process assertion, not a property measurable against the file. ONE CANDIDATE BOUNDARY WAS TESTED AND DISCARDED rather than carried: backfill-last-updated.mjs was first taken to be the maintaining mechanism, and is not - it is a ONE-FILE backfill (decision-trees.md). The boundary rests on the header contract and the refresh path instead.\nTHE CLASS WAS MEASURED WITH THREE INDEPENDENT NETS, not with the one word the entry happened to use: (1) named variants (\"**Word count\", \"**Ordtelling\", \"**Antall ord\", \"**Words\", \"**Ordantall\", \"**Lengde\"); (2) case-insensitive \"word count\"; (3) a full enumeration of EVERY bold-label field carrying a numeric value across all 394 skills/**/*.md, grouped by label. The third net is the one that can see a field whose name nobody guessed: it returned no line count, no character count, no page count, no section count, no reading time. The class is ONE under every net.\nTHE INSTANCE, agent-evaluation-testing-frameworks.md:564: \"- **Word count:** ~3200 ord\" against a measured 3369 words (5.3% off). All three of #29's grounds hold here: (1) no part is true, so #28 sends the case onward in its own words; (2) deletion costs no true information - a word count has no use in a knowledge-base reference file and wc -w answers it in a second; (3) the only available repair is self-invalidating.\nGROUND (3) IS NO LONGER AN ARGUMENT, IT IS AN OBSERVATION, and that is what this ratification adds to #29. The entry and STATE both recorded wc -w = 3374. It is 3369. The five-word difference is the \"- **File size:** ~29 KB\" line that #29 DELETED FROM THIS SAME FILE the previous session (35ac933). The programme falsified its own freshly-measured word count inside one day, by doing the very work the form governs. A corrected \"~3370\" would have been false again at the next edit - authoring a future instance of the defect class being closed, the idx-26v hazard #29 named.\nWHAT WAS RE-MEASURED RATHER THAN INHERITED, since a deletion that leaves a false line behind is the residue class G7 exists for: \"- **Unique sources:** 10 Microsoft Learn URLs\" is TRUE - 10 distinct learn.microsoft.com URLs after /en-us normalisation (11 raw occurrences; one repeat). THE LABEL \"**Document metadata:**\" IS KEPT UNCHANGED per #22's label rule, and #22's PROMOTE CLAUSE DOES NOT FIRE: it is conditioned on the label itself being deleted, and this label is keep-class. It now heads a single surviving line, which no ratified form treats as a defect.\nGOVERNS: idx-26aw."
}
},
"entries": [
@ -992,13 +993,14 @@
"id": "idx-26aw",
"file": "skills/ms-ai-engineering/references/agent-orchestration/agent-evaluation-testing-frameworks.md",
"class": "replacement",
"status": "open",
"status": "resolved",
"raised": "2026-08-12",
"summary": "Booked at the edit site while applying idx-26av, NOT found by a later sweep - the discipline #26 named after the ai-impact-assessment residue. \"- **Word count:** ~3200 ord\" at :564 sat DIRECTLY ABOVE the deleted \"- **File size:** ~29 KB\" and is arguably the same class: a physical property of the artifact that every future edit invalidates. MEASURED rather than asserted: wc -w = 3374 against a claimed ~3200, 5.2% off - the same defensible-under-the-tilde magnitude as the File size line in this very file, so the size of the error does not separate them either. THE REASON IT IS OPEN AND NOT DELETED: the ratification question put to the operator on 2026-08-12 named the \"**File size:**\" field and its three occurrences. It did not name word count. Extending #29 to this line would be inheritance by adjacency - the silent widening #22 refused for idx-26ar and #26 refused for the unlabelled-run class, and the premise type falsified twice in the preceding session. THE SCOPE IS ALREADY MEASURED for whoever adjudicates: this is the ONLY word-count field in the corpus (grep for \"**Word count:\", \"**Ordtelling\", \"**Antall ord\" across skills/), so the decision is one line, not a class. If it is deleted, \"**Document metadata:**\" would then label a single surviving line and #22's promote clause should be checked at that point.",
"evidence": "agent-evaluation-testing-frameworks.md:564; wc -w = 3374; corpus grep showing 1 occurrence of the word-count field; #29 not-covered clause; idx-26av resolution",
"anchors": [
"- **Word count:** ~3200 ord"
]
],
"resolution": "Operator-ratified 2026-08-13 as #30, a NEW FORM rather than an extension of #29 - the question named the widening explicitly and the alternative of leaving it to adjacency was on the ballot. DELETED at :564.\nTHE ENTRY'S OWN EVIDENCE WAS RE-MEASURED BEFORE IT WAS USED, and it was stale: this entry and STATE both said wc -w = 3374; the working tree is 3369. The cause is the resolution of idx-26av in the previous session, which deleted \"- **File size:** ~29 KB\" (five words) from this same file. The error against the claim is therefore 5.3%, not 5.2% - and the staleness is the strongest evidence for the form, not a blemish on it: the self-invalidation was demonstrated on this very line inside one day.\nTHE CLASS WAS RE-MEASURED WITH A NET THAT DOES NOT DEPEND ON THE FIELD'S NAME: every bold-label field with a numeric value across all 394 ref files, grouped by label. Still exactly one. Zero word-count fields remain corpus-wide after this edit.\nWHOLE-LINE PROOF: \"- **Word count:** ~3200 ord\" now occurs in 0 files corpus-wide; \"- **Unique sources:** 10 Microsoft Learn URLs\" occurs in exactly 1 and was re-measured TRUE (10 distinct URLs after /en-us normalisation). The label and the surviving line are byte-identical to before; the diff is one deletion and the file still ends in a newline."
}
]
}

View file

@ -561,4 +561,3 @@ results = mlflow.genai.evaluate(
**Document metadata:**
- **Unique sources:** 10 Microsoft Learn URLs
- **Word count:** ~3200 ord