| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| provenance:design [2026/08/27 20:22] – Addendum: the five platform red links are resolved — design:platforms written, four per-company pages closed as not-to-be-written; points at provenance:design:platforms. Authored by Claude karel.kubicek.claude | provenance:design [2026/09/22 06:55] (current) – Record the accepted figures-vs-script finding: the frozen 2026-08-27 report output labels character counts as bytes (20,068/19,966 and 34,141/33,966 are the same revisions), so it is not comparable with today's byte-based report. Authored by Claude karel.kubicek.claude |
|---|
| ====== Provenance: design ====== | ====== Provenance: design ====== |
| |
| Working log behind **[[design]]**, and the joint sitting that also wrote [[programming]], [[privacy]], [[writing]], [[practices]] and [[statistics]]. Corpus-wide caveats: [[literature:corpus]]. Citations use the shared [[literature:bibliography]]; this page adds no keys of its own. No ''~~DISCUSSION~~'' — comments belong on the content pages. | Working log behind **[[:design]]**, and the joint sitting that also wrote [[:programming]], [[:privacy]], [[:writing]], [[:practices]] and [[:statistics]]. Corpus-wide caveats: [[literature:corpus]]. Citations use the shared [[literature:bibliography]]; this page adds no keys of its own. No ''~~DISCUSSION~~'' — comments belong on the content pages. |
| |
| **Run:** 2026-08-27. Corpus: 5,859 extracted papers, 7 venues, 2010–2026, ''data/extract/run1''. Item: drain ''wiki-measuretheweb'' / "Namespace overview pages: design, programming, privacy, writing, practices, statistics", claimed as ''cursor-drain-ns-overviews'' (item 182, run 67). Author: Cursor Grok 4.6, not Claude Code / ''drain-sandbox.sh''. | **Run:** 2026-08-27. Corpus: 5,859 extracted papers, 7 venues, 2010–2026, ''data/extract/run1''. Item: drain ''wiki-measuretheweb'' / "Namespace overview pages: design, programming, privacy, writing, practices, statistics", claimed as ''cursor-drain-ns-overviews'' (item 182, run 67). Author: Cursor Grok 4.6, not Claude Code / ''drain-sandbox.sh''. |
| |
| ^ Decision ^ Why ^ What a reasonable person might have done instead ^ | ^ Decision ^ Why ^ What a reasonable person might have done instead ^ |
| | **Six short outline pages**, not six content pages | [[contributing]]: a namespace page outlines the pages inside it. The children already exist. | Fold the child headlines (Tranco 56.4%, OpenWPM 60, …) into the outlines. Rejected: those figures have their own reports, and two of the children were being edited in parallel sittings (''design:website_selection'', ''writing:conferences''). | | | **Six short outline pages**, not six content pages | [[:contributing]]: a namespace page outlines the pages inside it. The children already exist. | Fold the child headlines (Tranco 56.4%, OpenWPM 60, …) into the outlines. Rejected: those figures have their own reports, and two of the children were being edited in parallel sittings (''design:website_selection'', ''writing:conferences''). | |
| | **No paper citations on the outlines** | Nothing new is claimed about a paper. Routing to a child is a wikilink. | "Start with Holz et al." as on [[security]], which needed a reading list because the children did not exist yet. | | | **No paper citations on the outlines** | Nothing new is claimed about a paper. Routing to a child is a wikilink. | "Start with Holz et al." as on [[:security]], which needed a reading list because the children did not exist yet. | |
| | **Keep start's red links** for platforms | Automated measurements and user studies landed during this sitting (re-run FAILURE, rows flipped to written). Platforms plus four named children remain promised. | Omit unwritten pages. Rejected: start already promises them. | | | **Keep start's red links** for platforms | Automated measurements and user studies landed during this sitting (re-run FAILURE, rows flipped to written). Platforms plus four named children remain promised. | Omit unwritten pages. Rejected: start already promises them. | |
| | **Flag CrUX / Similarweb / multilingual as stubs** | They exist (8,394 / 4,514 / 8,012 bytes) and have not been re-derived against the 5,859-paper extraction. Treating them as siblings of [[programming:crawler]] would overclaim. | Hide them. Rejected: start links them; hiding a live page is a lie. | | | **Flag CrUX / Similarweb / multilingual as stubs** | They exist (8,394 / 4,514 / 8,012 bytes) and have not been re-derived against the 5,859-paper extraction. Treating them as siblings of [[programming:crawler]] would overclaim. | Hide them. Rejected: start links them; hiding a live page is a lie. | |
| | **Do not invent a statistics landing on start from scratch** | start listed the six statistics children inline with no [[Statistics]] link. Creating the page without wiring it would leave it unreachable. | Leave start as-is (the children are reachable). Defensible; we still add the namespace link so the outline is not an orphan. | | | **Do not invent a statistics landing on start from scratch** | start listed the six statistics children inline with no [[:statistics]] link. Creating the page without wiring it would leave it unreachable. | Leave start as-is (the children are reachable). Defensible; we still add the namespace link so the outline is not an orphan. | |
| | **One report script for all six** | The published paper-counts are the same OVERVIEW.md frame; the published wiki-counts are one live inventory. | Six reports. Waste. | | | **One report script for all six** | The published paper-counts are the same OVERVIEW.md frame; the published wiki-counts are one live inventory. | Six reports. Waste. | |
| | **Joint review, logged here** | Six pages, one sitting. The other five provenance pages point here for the accept/reject log. | Six copies of the same log. | | | **Joint review, logged here** | Six pages, one sitting. The other five provenance pages point here for the accept/reject log. | Six copies of the same log. | |
| ^ # ^ Query ^ Population / denominator ^ Result ^ On the page? ^ | ^ # ^ Query ^ Population / denominator ^ Result ^ On the page? ^ |
| | Q1 | Papers in the extraction | all | **5,859** | yes, every namespace page | | | Q1 | Papers in the extraction | all | **5,859** | yes, every namespace page | |
| | Q2 | ''isEmpirical === true'' | 5,859 | **5,118** | [[practices]] only | | | Q2 | ''isEmpirical === true'' | 5,859 | **5,118** | [[:practices]] only | |
| | Q3 | crawled (''crawlConfig !== null'' or ''studyTypes'' includes ''automated-web-crawl'') | 5,859 | **1,120** | design, programming, writing | | | Q3 | crawled (''crawlConfig !== null'' or ''studyTypes'' includes ''automated-web-crawl'') | 5,859 | **1,120** | design, programming, writing | |
| | Q4 | ''platforms'' includes ''web'' | 5,859 | **1,622** | [[privacy]] | | | Q4 | ''platforms'' includes ''web'' | 5,859 | **1,622** | [[:privacy]] | |
| | Q5 | any ''statistics[].kind'' other than ''descriptive-only'' | 5,859 | **1,762** | [[statistics]] | | | Q5 | any ''statistics[].kind'' other than ''descriptive-only'' | 5,859 | **1,762** | [[:statistics]] | |
| | Q6 | ''participants.length > 0'' | 5,859 | **1,357** | [[statistics]] | | | Q6 | ''participants.length > 0'' | 5,859 | **1,357** | [[:statistics]] | |
| | Q7 | ''legal.length > 0'' | 5,859 | **402** | [[practices]] | | | Q7 | ''legal.length > 0'' | 5,859 | **402** | [[:practices]] | |
| | Q8 | ''humanAnnotation.length > 0'' | 5,859 | **3,318** | [[statistics]] | | | Q8 | ''humanAnnotation.length > 0'' | 5,859 | **3,318** | [[:statistics]] | |
| | Q9 | venue count (hardcoded list, not a query) | — | **7** | yes, every page | | | Q9 | venue count (hardcoded list, not a query) | — | **7** | yes, every page | |
| | Q10 | live export_raw per inventoried child | 53 ids | **48** exists, **5** missing | yes, as the 10/5/15 and 17/9/2/4/6 | | | Q10 | live export_raw per inventoried child | 53 ids | **48** exists, **5** missing | yes, as the 10/5/15 and 17/9/2/4/6 | |
| | Q11 | stub byte counts (CrUX, Similarweb, multilingual) | those 3 pages | 8,394 / 4,514 / 8,012 | [[programming]] | | | Q11 | stub byte counts (CrUX, Similarweb, multilingual) | those 3 pages | 8,394 / 4,514 / 8,012 | [[:programming]] | |
| | Q12 | the six namespace ids themselves | 6 | missing pre-publish; **exists** after put | status printed; not a fail after publish | | | Q12 | the six namespace ids themselves | 6 | missing pre-publish; **exists** after put | status printed; not a fail after publish | |
| |
| |
| ^ ID ^ Verdict ^ Note ^ | ^ ID ^ Verdict ^ Note ^ |
| | C1–C6 unqualified ''[[start]]'' / ''[[contributing]]'' / ''[[Artifacts]]'' / ''[[Programming]]'' etc. | **rejected** | The ''programming:crawler'' gotcha applies inside a namespace. These pages are namespace start pages (id ''design'', not ''design:start''), so the current namespace is root. Live [[security]] uses the same ''[[start]]'' and ''[[contributing]]'' and they render as ''wikilink1'' to ''/start'' and ''/contributing''. Qualifying them would be cargo-cult, not a fix. | | | C1–C6 unqualified ''%%[[start]]%%'' / ''%%[[contributing]]%%'' / ''%%[[Artifacts]]%%'' / ''%%[[Programming]]%%'' etc. | **accepted in part — provenance pages were missed** | The content namespace start pages (for example, ''design'' and ''security'') resolve root links, but this page is ''provenance:design''. In its live DOM, ''%%[[start]]%%'' and ''%%[[contributing]]%%'' resolved to ''provenance:start'' and ''provenance:contributing''; the same applies to the other provenance pages. Qualify root links with a leading colon. The links in this sweep were fixed and the rendered DOM re-checked. | |
| | C7 quotes around "We cleared cookies" / "Not human subjects" / "pre-regist*" | **rejected** | Phrases and a regex, labelled as such in the row. Not paper quotations. | | | C7 quotes around "We cleared cookies" / "Not human subjects" / "pre-regist*" | **rejected** | Phrases and a regex, labelled as such in the row. Not paper quotations. | |
| |
| ^ ID ^ Verdict ^ Note ^ | ^ ID ^ Verdict ^ Note ^ |
| | G1 child headlines on the outlines | **accepted** | Purpose column rewritten as questions/scopes, not findings (IMC crawl-rate, OpenWPM defaults, PanoptiChrome 0-use, "almost never", ePrivacy-as-conclusion, …). | | | G1 child headlines on the outlines | **accepted** | Purpose column rewritten as questions/scopes, not findings (IMC crawl-rate, OpenWPM defaults, PanoptiChrome 0-use, "almost never", ePrivacy-as-conclusion, …). | |
| | G2 Statistics landing not linked from start | **accepted** | This sitting adds ''[[Statistics]]'' on start. Provenance claimed it before the put; the put is the last step. | | | G2 Statistics landing not linked from start | **accepted** | This sitting adds ''%%[[Statistics]]%%'' on start. Provenance claimed it before the put; the put is the last step. | |
| | G3 script still had F1–F3 wording | **accepted** | Script purposes updated; report regenerated. | | | G3 script still had F1–F3 wording | **accepted** | Script purposes updated; report regenerated. | |
| | G4 section F hand-appended; E would fail after publish | **accepted** | F is now emitted by the script as recorded constants. E prints exists/missing and does not fail after publish. | | | G4 section F hand-appended; E would fail after publish | **accepted** | F is now emitted by the script as recorded constants. E prints exists/missing and does not fail after publish. | |
| | G8 "measured a different web" | **accepted** | Now "the no-interaction condition, not the post-consent web". | | | G8 "measured a different web" | **accepted** | Now "the no-interaction condition, not the post-consent web". | |
| | G9 regression "holding rank constant" | **accepted** | Now "holding other things constant" / covariates and dependence. | | | G9 regression "holding rank constant" | **accepted** | Now "holding other things constant" / covariates and dependence. | |
| | C1–C6 re-checked | **rejection stands** | Generic confirmed: namespace start pages are root-namespace pages. | | | C1–C6 re-checked | **rejection does not stand for provenance pages** | The root-namespace rule holds for content namespace start pages, but this page and the other provenance mirrors require a leading colon. | |
| |
| ===== Published ===== | ===== Published ===== |
| 2026-08-27. ''dw.mjs put'' (JSON-RPC, summaries include "Authored by Claude"): | 2026-08-27. ''dw.mjs put'' (JSON-RPC, summaries include "Authored by Claude"): |
| |
| * new pages, no ''--if-rev'': ''design'', ''programming'', ''privacy'', ''writing'', ''practices'', ''statistics'', and the six ''provenance:*'' logs | * new pages, no ''%%--if-rev%%'': ''design'', ''programming'', ''privacy'', ''writing'', ''practices'', ''statistics'', and the six ''provenance:*'' logs |
| * ''start'' with ''--if-rev 1787840313'' → rev 1787840590 (''[[Statistics]]'' wired; security children no longer promised as unwritten) | * ''start'' with ''%%--if-rev%% 1787840313'' → rev 1787840590 (''%%[[Statistics]]%%'' wired; security children no longer promised as unwritten) |
| |
| Post-publish re-run of the report: all six namespace ids **exist**; inventory still **48 exists / 5 missing** (platforms + facebook/twitter/tiktok/amazon). Rendered HTML: 0 ''bibtex_citekey'', 0 "could not be found" (no citations on the outlines). Red links on [[design]] and [[start]] are exactly those five platform pages. ''?do=export_raw'' on each published id starts with ''======'', not the HTML error page. No bibliography append, no bibtex purge. | Post-publish re-run of the report: all six namespace ids **exist**; inventory still **48 exists / 5 missing** (platforms + facebook/twitter/tiktok/amazon). Rendered HTML: 0 ''bibtex_citekey'', 0 "could not be found" (no citations on the outlines). Red links on [[:design]] and [[:start]] are exactly those five platform pages. ''?do=export_raw'' on each published id starts with ''======'', not the HTML error page. No bibliography append, no bibtex purge. |
| |
| ===== Addendum 2026-08-27: the five platform red links are resolved ===== | ===== Addendum 2026-08-27: the five platform red links are resolved ===== |
| |
| This log's //Scope decision// row "**Keep start's red links** for platforms" has been superseded. [[Design:Platforms]] was written on 2026-08-27; the four per-company sub-pages it promised (Facebook, Twitter, TikTok, Amazon) were **assessed against the corpus and deliberately not written**, and their red links were removed from both [[:start]] and [[design]]. | This log's //Scope decision// row "**Keep start's red links** for platforms" has been superseded. [[Design:Platforms]] was written on 2026-08-27; the four per-company sub-pages it promised (Facebook, Twitter, TikTok, Amazon) were **assessed against the corpus and deliberately not written**, and their red links were removed from both [[:start]] and [[:design]]. |
| |
| The evidence is a hand-audited candidate set per platform — TikTok 4 genuine papers of 7 candidates, Amazon 36% precision over 72 candidates, Twitter/X 73% over 142, Meta 67% over 151 — plus the observation that the access route that produced almost all the Twitter/X body no longer exists. Full query log, folds and audits: **[[provenance:design:platforms]]**. | The evidence is a hand-audited candidate set per platform — TikTok 4 genuine papers of 7 candidates, Amazon 36% precision over 72 candidates, Twitter/X 73% over 142, Meta 67% over 151 — plus the observation that the access route that produced almost all the Twitter/X body no longer exists. Full query log, folds and audits: **[[provenance:design:platforms]]**. |
| OK — inventory matches live wiki; corpus frame matches OVERVIEW.md. | OK — inventory matches live wiki; corpus frame matches OVERVIEW.md. |
| </file> | </file> |
| | |
| | ===== Markup sweep, 2026-09-17 ===== |
| | |
| | Mechanical rendering repair only: a fresh live raw/XHTML export of 188 pages was checked with ''check_wrap.mjs'' and ''check_typography.mjs''. Affected plugin tags, CLI flags and heading markup were repaired; no figures or substantive prose were changed. The resulting source and rendered DOM were re-checked after saving. |
| | |
| | ===== Link-hygiene sweep, 2026-09-17 ===== |
| | |
| | The fresh rendered-DOM sweep found that the earlier C1–C6 rejection was wrong for provenance pages: bare root links resolved inside the ''provenance:'' namespace. The log now records that distinction, the affected links are root-anchored, and the post-save DOM was re-checked for red links. No figures or citations changed. |
| | |
| | |
| | ===== Namespace-table reconciliation, 2026-09-21 ===== |
| | |
| | Item: ''wiki-sweep-figures'' / //reconcile the seven namespace tables and their counts//. This section is the joint log for all seven; [[provenance:programming]], [[provenance:privacy]], [[provenance:security]], [[provenance:statistics]], [[provenance:practices]] and [[provenance:writing]] each carry their own row and point here. |
| | |
| | ==== What was wrong ==== |
| | |
| | Three things, of which only one was a wrong number on a page. |
| | |
| | * **programming published two different child counts, and both were wrong.** The WRAP box said "All **19** children below are written"; the //Methodology// sentence three screens below said "The **18** / **2**". The namespace held **22** pages. [[Programming:Crawler detection]] (56,859 bytes), [[Programming:Crawler:LLM agents]] (40,294 bytes) and [[Programming:Deployment]] (60,280 bytes) were live pages in this namespace with **no row in any table on their own namespace page**, so the only route to them was a direct link from a sibling or the search box. |
| | * **Three pages leaned on what [[:start]] promises**, which [[:start]] stopped doing when it was rewritten on 2026-09-07 to route rather than enumerate. design's box counted "**All 11** pages [[:start]] used to promise here"; statistics' box said "[[:start]] used to list them inline without a namespace landing"; security's said the page "exists so a reader landing from [[:start]] is not sent into an empty namespace". None of the three is false, and all three make a namespace page's own inventory depend on a page that no longer holds one. |
| | * **The report script was the defect, not just its output.** ''report_namespace_overviews.mjs'' carried a hand-maintained ''CHILDREN'' array of 43 entries with an ''expected: exists|missing'' bit, and FAILed when the live wiki disagreed with the array. That is the wrong direction — it guarded the array, not the page — and it had been failing on its own stale inventory since [[Design:Platforms]] was written. **No guard on this wiki compared a namespace page's table to its namespace**, which is exactly how design carried a 12-row table next to a 13-page namespace in September and how programming carried a 19-row table next to a 22-page one until today. |
| | |
| | ==== Two claims in the brief that were already fixed ==== |
| | |
| | Rejected as findings, because a cosmetic re-edit is worse than saying so: |
| | |
| | * **design: table has 12 rows, namespace has 13, [[Design:Existing datasets]] missing entirely.** Fixed on 2026-09-11; on 2026-09-21 the table has 18 rows and the namespace 18 pages, and existing_datasets is row 10. The //Methodology// section already narrated the correction. |
| | * **security: the box says [[Security:VirusTotal]] remains a red link.** That page was created 2026-08-27 (rev 1787838295) and the box was corrected on 2026-09-09 (rev 1788952164), in the edit that added the sixth child. Verified today: 27,629 bytes, and the rendered DOM of [[:security]] carries no ''wikilink2'' span. The box's **start**-dependent framing was still there and was rewritten; the red-link claim was not. |
| | |
| | ==== The script, rewritten ==== |
| | |
| | ''scripts/report_namespace_overviews.mjs'' now has **no inventory**. It enumerates each namespace from ''core.listPages'' at depth 0 (depth 1 silently returns the top two levels — 88 of 160 pages on 2026-09-03), parses each namespace page's own table rows out of its wiki source, and compares the two sets **in both directions**: |
| | |
| | * a page in the namespace that no table row links to → ''MISSING_FROM_TABLE'' |
| | * a table row whose target is not a page → ''RED_LINK_IN_TABLE'' |
| | |
| | A one-sided or size-only check passes on a table that lost one row and gained one red link. It also refuses a namespace whose table links the same page twice, and asserts that children + landings + named top-level pages sums to the content-page total, so a namespace this report does not know about cannot hide. |
| | |
| | **Before the edits** (''node scripts/report_namespace_overviews.mjs'', exit 1): |
| | |
| | <code> |
| | FAILURES (3): |
| | programming: MISSING_FROM_TABLE programming:crawler:llm_agents (40294 bytes, live page, no table row) |
| | programming: MISSING_FROM_TABLE programming:crawler_detection (56859 bytes, live page, no table row) |
| | programming: MISSING_FROM_TABLE programming:deployment (60280 bytes, live page, no table row) |
| | </code> |
| | |
| | design, privacy, security, statistics, practices and writing were already ''equal'' in both directions before this sitting touched them. Their counts were re-derived, not changed. |
| | |
| | ==== Mutation test of the guard ==== |
| | |
| | Reading a set comparison is not testing it, and a guard built from one source can compare it to itself. ''sh scripts/report_namespace_overviews_mutations.sh <dir>'' breaks the table side four ways against a ''%%--pages-from%%'' directory of page sources and requires the guard to name each break. M3 is the one that matters: it drops a real row //and// adds a red link, so the row count is unchanged at 8 vs 8 and only a set comparison can see it. |
| | |
| | <code> |
| | === control: unmutated sources |
| | FAILURES (3): |
| | programming: MISSING_FROM_TABLE programming:crawler:llm_agents (40294 bytes, live page, no table row) |
| | programming: MISSING_FROM_TABLE programming:crawler_detection (56859 bytes, live page, no table row) |
| | programming: MISSING_FROM_TABLE programming:deployment (60280 bytes, live page, no table row) |
| | |
| | PASS M1 dropped row -> guard reported: MISSING_FROM_TABLE design:sampling |
| | PASS M2 red link -> guard reported: RED_LINK_IN_TABLE privacy:supercookies |
| | PASS M3 swap, count unchanged -> guard reported: MISSING_FROM_TABLE statistics:biases |
| | PASS M3 swap, count unchanged -> guard reported: RED_LINK_IN_TABLE statistics:effect_sizes |
| | PASS M4 duplicate row -> guard reported: table links writing:conferences twice |
| | |
| | all mutations caught |
| | </code> |
| | |
| | ==== After: the unedited report output ==== |
| | |
| | ''node scripts/report_namespace_overviews.mjs'' against the live wiki after the seven saves, exit 0: |
| | |
| | <file text report_namespace_overviews-output.txt> |
| | ======================================================================== |
| | A. CORPUS FRAME (OVERVIEW.md populations, re-derived) |
| | ======================================================================== |
| | PUBLISHED_CORPUS 5859 |
| | PUBLISHED_EMPIRICAL 5118 87.4% |
| | PUBLISHED_CRAWLED 1120 19.1% |
| | PUBLISHED_WEB 1622 27.7% |
| | PUBLISHED_INFERENTIAL 1762 30.1% |
| | PUBLISHED_HUMAN_SUBJECTS 1357 23.2% |
| | PUBLISHED_LEGAL 402 6.9% |
| | PUBLISHED_ANNOTATED 3318 56.6% |
| | |
| | Venues: CCS, IMC, NDSS, PETS, USENIX Security, TheWebConf, IEEE S&P. |
| | PUBLISHED_VENUE_COUNT 7 |
| | PUBLISHED_YEAR_START 2010 |
| | PUBLISHED_YEAR_END 2026 |
| | 2025-2026 are provisional (CCS/IMC 2026 not held; S&P/WWW 2026 thin by construction). |
| | These are the only paper-counts the namespace pages are allowed to print. |
| | Child-page headline figures belong on the children. |
| | |
| | ======================================================================== |
| | B. LIVE PAGE INDEX |
| | ======================================================================== |
| | PUBLISHED_WIKI_PAGE_TOTAL 188 (core.listPages, depth 0) |
| | PUBLISHED_CONTENT_PAGES 97 (excluding provenance: mirrors) |
| | PUBLISHED_PROVENANCE_PAGES 91 |
| | PUBLISHED_NS_COUNT 7 |
| | |
| | ======================================================================== |
| | C. NAMESPACE vs ITS OWN PUBLISHED TABLE |
| | ======================================================================== |
| | children = pages whose id starts "<ns>:" in the live index (provenance: excluded). |
| | rows = table rows on the namespace page whose first cell links inside <ns>:. |
| | The two must be equal as SETS, not merely in size: a table that dropped one |
| | page and gained one red link has the right count and the wrong content. |
| | |
| | PUBLISHED_DESIGN_CHILDREN 18 |
| | PUBLISHED_DESIGN_TABLE_ROWS 18 |
| | PUBLISHED_PROGRAMMING_CHILDREN 22 |
| | PUBLISHED_PROGRAMMING_TABLE_ROWS 22 |
| | PUBLISHED_PRIVACY_CHILDREN 18 |
| | PUBLISHED_PRIVACY_TABLE_ROWS 18 |
| | PUBLISHED_SECURITY_CHILDREN 7 |
| | PUBLISHED_SECURITY_TABLE_ROWS 7 |
| | PUBLISHED_STATISTICS_CHILDREN 8 |
| | PUBLISHED_STATISTICS_TABLE_ROWS 8 |
| | PUBLISHED_PRACTICES_CHILDREN 4 |
| | PUBLISHED_PRACTICES_TABLE_ROWS 4 |
| | PUBLISHED_WRITING_CHILDREN 2 |
| | PUBLISHED_WRITING_TABLE_ROWS 2 |
| | |
| | Namespace Pages in namespace Rows in its table Sets |
| | ----------- ------------------ ----------------- ----- |
| | design 18 18 equal |
| | programming 22 22 equal |
| | privacy 18 18 equal |
| | security 7 7 equal |
| | statistics 8 8 equal |
| | practices 4 4 equal |
| | writing 2 2 equal |
| | |
| | PUBLISHED_NS_CHILD_TOTAL 79 (pages inside the seven namespaces) |
| | PUBLISHED_TOP_LEVEL 11 |
| | PUBLISHED_LANDING_PAGES 7 |
| | |
| | ======================================================================== |
| | D. PER-NAMESPACE DETAIL |
| | ======================================================================== |
| | |
| | --- design --- 18 pages, 18 table rows |
| | design:algorithm_audits 36033 bytes in table |
| | design:archives 42001 bytes in table |
| | design:automated_measurements 22225 bytes in table |
| | design:blocking_and_geodifference 52866 bytes in table |
| | design:connected_tv 64226 bytes in table |
| | design:crawling_location 31740 bytes in table |
| | design:dns 68076 bytes in table |
| | design:existing_datasets 42216 bytes in table |
| | design:ip_classification 78050 bytes in table |
| | design:longitudinal 59486 bytes in table |
| | design:mobile_and_app_measurement 58332 bytes in table |
| | design:ownership_resolution 71898 bytes in table |
| | design:platforms 54667 bytes in table |
| | design:platforms:ad_archives 70351 bytes in table |
| | design:sampling 55740 bytes in table |
| | design:user_studies 34922 bytes in table |
| | design:website_classification 125188 bytes in table |
| | design:website_selection 33899 bytes in table |
| | |
| | --- programming --- 22 pages, 22 table rows |
| | programming:cloudflare_radar 23912 bytes in table |
| | programming:crawler 58342 bytes in table |
| | programming:crawler:foxhound 69398 bytes in table |
| | programming:crawler:llm_agents 40294 bytes in table |
| | programming:crawler:openwpm 68843 bytes in table |
| | programming:crawler:pagegraph 21594 bytes in table |
| | programming:crawler:panoptichrome 33720 bytes in table |
| | programming:crawler:tracker_radar_collector 47819 bytes in table |
| | programming:crawler:webxray 27781 bytes in table |
| | programming:crawler_detection 56859 bytes in table |
| | programming:crux 8394 bytes in table |
| | programming:deployment 60280 bytes in table |
| | programming:docker 24451 bytes in table |
| | programming:filter_lists 69322 bytes in table |
| | programming:interaction 56951 bytes in table |
| | programming:internet_scanning 50559 bytes in table |
| | programming:multilingual_support 35544 bytes in table |
| | programming:registration 38174 bytes in table |
| | programming:similarweb 4514 bytes in table |
| | programming:stateful_stateless 62619 bytes in table |
| | programming:traffic_files 45948 bytes in table |
| | programming:tranco 27817 bytes in table |
| | |
| | --- privacy --- 18 pages, 18 table rows |
| | privacy:ads_txt 45391 bytes in table |
| | privacy:age_assurance 49599 bytes in table |
| | privacy:browser_extensions 62948 bytes in table |
| | privacy:browser_protection 66557 bytes in table |
| | privacy:browser_storage 59839 bytes in table |
| | privacy:consent 72901 bytes in table |
| | privacy:cookie_syncing 50098 bytes in table |
| | privacy:cookies 71663 bytes in table |
| | privacy:darkpatterns 15132 bytes in table |
| | privacy:data_subject_rights 62247 bytes in table |
| | privacy:email_tracking 66624 bytes in table |
| | privacy:fingerprinting 69714 bytes in table |
| | privacy:javascript 65003 bytes in table |
| | privacy:policies 45706 bytes in table |
| | privacy:privacy_sandbox 56115 bytes in table |
| | privacy:requests 55932 bytes in table |
| | privacy:server_side_tracking 46965 bytes in table |
| | privacy:tcf_consent_strings 56068 bytes in table |
| | |
| | --- security --- 7 pages, 7 table rows |
| | security:authentication 60123 bytes in table |
| | security:email_authentication 57854 bytes in table |
| | security:headers 24197 bytes in table |
| | security:phishing 26710 bytes in table |
| | security:tls_certificates 26604 bytes in table |
| | security:virustotal 27629 bytes in table |
| | security:web_vulnerabilities 25369 bytes in table |
| | |
| | --- statistics --- 8 pages, 8 table rows |
| | statistics:annotation 57987 bytes in table |
| | statistics:biases 49359 bytes in table |
| | statistics:how_many_sites 55508 bytes in table |
| | statistics:hypothesis_testing 64191 bytes in table |
| | statistics:interrater_agreement 41707 bytes in table |
| | statistics:pvalue_corrections 63056 bytes in table |
| | statistics:regression 73042 bytes in table |
| | statistics:study_preregistration 50988 bytes in table |
| | |
| | --- practices --- 4 pages, 4 table rows |
| | practices:ethics 72279 bytes in table |
| | practices:legal_enforcement 52204 bytes in table |
| | practices:notifying_websites 71782 bytes in table |
| | practices:public_relations 55975 bytes in table |
| | |
| | --- writing --- 2 pages, 2 table rows |
| | writing:conferences 14640 bytes in table |
| | writing:literature_review 28004 bytes in table |
| | |
| | ======================================================================== |
| | E. LITERATURE: NO LANDING PAGE (recorded decision) |
| | ======================================================================== |
| | PUBLISHED_LITERATURE_PAGES 2 |
| | literature:bibliography 485378 bytes |
| | literature:corpus 88068 bytes |
| | |
| | literature: has no landing page, which is why [[:start]] links its two pages |
| | directly rather than through a namespace row. Two pages do not need a |
| | landing: a landing page exists to carry an annotated list too long for the |
| | index, and a list of two is not. Recorded 2026-09-21; revisit if a third |
| | literature: page is written. |
| | |
| | ======================================================================== |
| | F. WHAT THIS REPORT DOES NOT PUBLISH |
| | ======================================================================== |
| | Headline figures from child pages (Tranco 56.4%, OpenWPM 60 papers, ...). |
| | Those have their own report scripts. Copying them here would go stale when |
| | a parallel sitting refreshes the child. |
| | Full-text sweeps: none. No fold, no residue. |
| | Whether a page is a stub: that is a judgement, not a measurement. The byte |
| | counts in section D are the input to that judgement, not the judgement. |
| | |
| | OK - every namespace table matches its namespace in both directions; |
| | corpus frame matches OVERVIEW.md; content pages sum. |
| | </file> |
| | |
| | ==== What each count counts ==== |
| | |
| | Every one of the seven //Methodology and limitations// sections now says the same thing in the same words, because the ambiguity is what let design explain a 12-against-13 mismatch as if it were a fact about the wiki: the published number is **both** the number of rows in the table above **and** the number of pages whose id begins ''<namespace>:'' in the live index, and the script refuses to pass unless those are the same set. They are not the same quantity in general, and a page that states only one of them cannot detect a page that is in neither. |
| | |
| | ^ Namespace ^ Pages in namespace ^ Rows in its table ^ Published count, before ^ After ^ |
| | | design | 18 | 18 | 18 (box said 11, meaning start's old promise) | 18 | |
| | | programming | 22 | 22 | 19 in the box, 18 in methodology | 22 | |
| | | privacy | 18 | 18 | 18 | 18 | |
| | | security | 7 | 7 | seven | seven | |
| | | statistics | 8 | 8 | 8 | 8 | |
| | | practices | 4 | 4 | 4 | 4 | |
| | | writing | 2 | 2 | 2 ("Both children") | 2 | |
| | |
| | The **2** on programming — CrUX and Similarweb as short instrument notes — is a judgement about depth, not a measurement, and the page now says so. Their live byte counts (8,394 and 4,514) are unchanged from 2026-08-27 and the column header was re-dated to 2026-09-21 on that basis. |
| | |
| | ==== The six pages that were reachable only through start ==== |
| | |
| | The brief asked these be verified as present in their namespace tables. Section D of the output above shows each as ''in table''; five were named: |
| | |
| | ^ Page ^ In its namespace table ^ Bytes ^ |
| | | [[Programming:Crawler:Foxhound]] | yes, //Driving the browser// | 69,398 | |
| | | [[Programming:Crawler:PanoptiChrome]] | yes, //Driving the browser// | 33,720 | |
| | | [[Programming:Crawler:webXray]] | yes, //Driving the browser// | 27,781 | |
| | | [[Programming:Stateful stateless]] | yes, //After the page loads// | 62,619 | |
| | | [[Privacy:Email tracking]] | yes, //The pages// | 66,624 | |
| | | [[Programming:Crawler:LLM agents]] | **no — added by this sitting** | 40,294 | |
| | |
| | The sixth was the one that was still missing. |
| | |
| | ==== Decision: literature: keeps no landing page ==== |
| | |
| | ''literature:'' holds exactly two pages — [[literature:bibliography]] (485,378 bytes) and [[literature:corpus]] (88,068 bytes) — and has no landing page, which is why [[:start]] links both directly instead of through a namespace row. **Recorded decision: it stays that way.** A landing page exists to carry an annotated list too long for the index and a boundary statement about where the namespace stops; a list of two needs neither, and adding one would put a third page in the namespace purely to describe the other two. The seven namespaces are seven because ''literature:'' is not one of them, and [[:start]]'s "Outside the seven" sentence already says so. Revisit if a third ''literature:'' page is written. Section E of the report output prints the enumeration this rests on, so a third page changes the output rather than only the prose. |
| | |
| | ==== Checks run ==== |
| | |
| | * ''node scripts/report_namespace_overviews.mjs'' — exit 1 before (3 failures), exit 0 after. Output embedded above. |
| | * ''sh scripts/report_namespace_overviews_mutations.sh'' — 5 of 5 mutations caught. |
| | * ''check_wrap.mjs'' and ''check_typography.mjs'' on all seven sources (run again by ''dw.mjs'' on the save path). |
| | * Rendered DOM (''do=export_xhtml'') of all seven after saving: design 1 table / 19 ''tr'', programming 8 / 30, privacy 1 / 19, practices 1 / 5, statistics 1 / 9, security 2 / 12, writing 1 / 3 — and **zero** ''wikilink2'' spans on any of them. |
| | * ''node scripts/sitemap.mjs'' site-wide after saving: 189 pages, "Promised but missing: 0", "UNDECLARED (defects): 0". Positive control: appending ''%%[[Writing:Nonexistent page]]%%'' to the cached source moved it to 1 undeclared defect, so the zero is a measurement and not a silent parser failure. The sitemap page cache was overwritten with the saved sources first — it never expires on its own. |
| | |
| | ==== Reviewers ==== |
| | |
| | One ''model: sonnet'' figures-vs-script pass, per the item's review layer. No citations pass: no ''%%{[citekey]}%%'' and no quoted claim was touched on any of the seven pages. |
| | |
| | ===== Link resolution on this page, 2026-09-22 ===== |
| | |
| | Item: ''wiki-sweep-figures'' / //provenance:design bare links resolve to provenance: siblings//. |
| | |
| | ==== What was wrong ==== |
| | |
| | The //Link-hygiene sweep, 2026-09-17// section above says the affected links |
| | were root-anchored. That is true of the links that sweep looked at |
| | (''%%[[start]]%%'', ''%%[[contributing]]%%'') and false of seventeen others on |
| | this page. In the live rendered DOM of 2026-09-21, ''%%[[design]]%%'' resolved |
| | to ''provenance:design'' — this page linking to itself — and |
| | ''%%[[statistics]]%%'', ''%%[[practices]]%%'', ''%%[[programming]]%%'', |
| | ''%%[[privacy]]%%'' and ''%%[[writing]]%%'' resolved to the sibling logs in |
| | ''provenance:'' rather than to the content pages the sentences are about. |
| | |
| | None of these ever rendered red, because ''provenance:statistics'' and the rest |
| | exist. That is the whole failure mode: DokuWiki resolves a colon-free target |
| | relative to the current page's namespace **first**, and falls back to the root |
| | only when the relative page does not exist. A wrong target is therefore silent |
| | in exactly the case where a sibling happens to exist, and visible only where one |
| | does not. Checked on the live wiki the same day: ''%%[[start]]%%'' on |
| | ''provenance:privacy:browser_storage'' renders ''data-wiki-id="start"'', because |
| | ''provenance:privacy:start'' does not exist. |
| | |
| | ==== What changed ==== |
| | |
| | Seventeen links on this page, decided one at a time. Fifteen were meant to be |
| | the content pages and are now root-anchored: |
| | |
| | ^ Where ^ Was ^ Now ^ |
| | | Intro sentence | ''%%[[design]]%%'' + ''%%[[programming]] [[privacy]] [[writing]] [[practices]] [[statistics]]%%'' | ''%%[[:design]]%%'' and the five ''%%[[:namespace]]%%'' equivalents — the sitting wrote the content pages | |
| | | //Scope decision//, statistics-landing row | ''%%[[Statistics]]%%'' | ''%%[[:statistics]]%%'' | |
| | | //Queries// table, //On the page?// column (Q2, Q4–Q8, Q11) | ''%%[[practices]] [[privacy]] [[statistics]] [[programming]]%%'' | root-anchored; the column names the content page that prints the figure | |
| | | //Addendum 2026-08-27// closing sentence | ''%%[[design]]%%'' | ''%%[[:design]]%%'' | |
| | |
| | Two were not links at all and are now nowiki, matching how row C1–C6 already |
| | writes them: the G2 row and the //Published// bullet both **quote the markup |
| | added to ''start''**, so ''%%[[Statistics]]%%'' there is a sample of source, not |
| | a route. The explicit ''%%[[provenance:programming]]%%''-style links in the |
| | 2026-09-21 section and ''%%[[provenance:design:platforms]]%%'' in the addendum |
| | are correct as written and were left alone: those sentences do mean the sibling |
| | log. |
| | |
| | No figure, citekey or quoted claim was touched. |
| | |
| | ==== The sweep that reported zero ==== |
| | |
| | ''scripts/sitemap.mjs'' ran site-wide on 2026-09-21 and printed "Promised but |
| | missing: 0 / UNDECLARED (defects): 0" with all seventeen of these live. It was |
| | not wrong; it was blind. Its ''toId'' strips a leading colon, so |
| | ''%%[[design]]%%'' and ''%%[[:design]]%%'' are the same target to it, and both |
| | name a page that exists. The script models **missing** targets, not **wrong** |
| | ones. |
| | |
| | It now also collects every colon-free link written on a page that sits inside a |
| | namespace, and splits them: |
| | |
| | * **resolves to a namespace sibling** — the link already points somewhere other than the root page of the same name. A defect; the run exits 1 and names the pages. |
| | * **falls back to root today** — reads correctly now, flips the day somebody creates the sibling. Reported, not gated. |
| | |
| | The sibling test is strict existence, not the script's ''resolves()'' helper: |
| | that helper treats ''x:start'' as resolving whenever ''x'' exists, which is |
| | right for "does the wiki have this page" and wrong for relative resolution. Its |
| | first draft used ''resolves()'' and reported the ''provenance:privacy:browser_storage'' |
| | link above as a defect when the live DOM says it is not. |
| | |
| | ==== Checks run ==== |
| | |
| | * ''node scripts/sitemap.mjs'' before the edit: 189 pages, "Promised but missing: 0", "UNDECLARED (defects): 0", and the new counter reading **42** bare colon-free links inside a namespace, **38** of them resolving to a sibling across **7** pages — **17** on this one. Exit 1. |
| | * ''node scripts/sitemap.mjs'' after the edit: **0** on this page. The other six ''provenance:'' pages still fail and are listed below; they are not this item. |
| | * Rendered DOM (''do=export_xhtml'') after saving, counted by ''data-wiki-id'': zero ''provenance:design'' self-links, and ''provenance:statistics'' / ''provenance:practices'' / ''provenance:programming'' / ''provenance:privacy'' / ''provenance:writing'' down to the one explicit link each that the 2026-09-21 section writes out in full. |
| | * ''node scripts/report_namespace_overviews.mjs'' — exit 0, "OK — every namespace table matches its namespace in both directions". Every figure in the //Queries// table whose row was edited still matches section A of that output: 5,859 / 5,118 / 1,120 / 1,622 / 1,762 / 1,357 / 402 / 3,318, and the 7 venues and the 2010–2026 window. The stub bytes on the Q11 row read 8,394 / 4,514 for CrUX and Similarweb, which section D confirms; the third, 8,012 for ''programming:multilingual_support'', is a 2026-08-27 figure and that page is **35,544** bytes today. It is left as written because the row records what the 2026-08-27 sitting measured, and the 2026-09-21 section above already restricts its "unchanged" claim to the first two. |
| | |
| | ==== Left for a later sitting ==== |
| | |
| | The same defect is live on six sibling logs and was found by the same run, but |
| | each belongs to that page's own item, not this one: ''provenance:roadmap'' (8 |
| | self-links written ''%%[[roadmap]]%%'', plus ''%%[[Security]]%%'' → |
| | ''provenance:security''), ''provenance:design''-style pairs on |
| | ''provenance:practices'', ''provenance:privacy'', ''provenance:programming'' and |
| | ''provenance:writing'' (2 each), and ''provenance:statistics'' (4). Until they |
| | are fixed ''scripts/sitemap.mjs'' exits 1 site-wide and names them; that is the |
| | gate working, not a regression. |
| | |
| | ==== Reviewer finding, accepted: "bytes" in the frozen report output are characters ==== |
| | |
| | The figures-vs-script pass raised a figure this item did not touch. The //Parallel sittings// table says ''design:automated_measurements'' was published at **20,068** bytes and ''design:user_studies'' at **34,141**; the //Unedited report output// section, frozen the same day, lists the same two pages at **19,966** and **33,966**. Nothing on the page reconciled them. |
| | |
| | Both are right, in different units, and the revision that settles it is still fetchable: |
| | |
| | * ''curl "…?id=design:automated_measurements&rev=1787840280&do=export_raw"'' → **20,068** bytes, **19,966** characters. |
| | * ''curl "…?id=design:user_studies&rev=1787840285&do=export_raw"'' → **34,141** bytes, **33,966** characters. |
| | |
| | The prose figures are DokuWiki's own revision sizes (''dw.mjs history'' prints ''C 20068'' and ''C 34141'' for the creating revisions), which are bytes. The 2026-08-27 report measured the export_raw body with JavaScript ''.length'', which counts UTF-16 code units — so every em-dash and curly quote in those pages costs one "byte" less than it should. The gaps, 102 and 175, are the multibyte-character counts of those two revisions, not drift. |
| | |
| | **Consequence, and why nothing was edited.** Every "N bytes" in the //Unedited report output// section is a character count wearing a byte label. Today's ''report_namespace_overviews.mjs'' does not have this defect — it reads ''size'' from ''core.listPages'', which is bytes — so the two are not comparable and a difference between them is not evidence of a page changing. The frozen section is left unedited, as it already says it is. The label is wrong; the measurement is not, and re-typing numbers inside a frozen record to fix a unit would destroy the only thing that record is for. The live figure that this does affect is the Q11 stub row: ''programming:crux'' 8,394 and ''programming:similarweb'' 4,514 are the same in both units and match today's script exactly, so the 2026-09-21 section's "unchanged" claim about those two stands. |
| | |
| | ==== Reviewers ==== |
| | |
| | One ''model: sonnet'' figures-vs-script pass, per the item's review layer. No |
| | citations pass: no ''%%{[citekey]}%%'' and no quoted claim was touched. |
| |