Skip to content

Research log

Google's git hosts need their maintainers' written permission, as Qt's REST API does

# research(2026-10). The 2026-10-08 entry admitted android.googlesource.com on its own robots.txt, which leaves git fetching open (RFC 9309 ties a robots.txt to the scheme and authority it is served from, sections 2.3 and 2.3.1.2), and set aside the reading that the review site's Disallow: / expresses the operator's wish about the records themselves. That reading is the stronger one: RFC 9309 says its rules "are not a form of access authorization" (section 1), so compliance with a robots.txt does not settle whether collection is wanted, and Gold and Krinke (EMSE 27, 2022, section 4.2.5) extend a mining study's compliance to a platform's terms and conditions, citing a platform's demand that researchers stop collecting data it had not permitted. The study asked Chromium's infra-dev list on 2026-09-23, mentioning the AOSP data already held, and has had only an automatic reply; AOSP's own maintainers were not asked. So every googlesource git host is refused until its maintainers grant permission in writing: GIT_PERMITTED refuses android, chromium and fuchsia (fuchsia added), and every host's pacing floor now applies whether or not it is permitted.

The bounded reading becomes a one-sided equivalence test at the SESOI

# research(2026-10). A cell read bounded when its upper bound fell below the effect its simulation says it detects at its Holm level: a margin set by the design's size, not by what matters. Equivalence bounds are set by the smallest effect size of interest (Lakens, Social Psychological and Personality Science 8(4), 2017; Lakens, Scheel and Isager, AMPPS 1(2), 2018, which also describes bounds at the smallest effect a study has the power to detect), and this study has a justified SESOI, δ (2026-09-30 and 2026-10-09 entries). So a cell now reads bounded when its upper bound at its Holm level lies below δ (decomposition.cell_verdict, margin): one-sided, since both hypotheses are directional, so a reversed effect still reads bounded. A cell's simulation stays required before a test read, as its power, not its margin; a cell without one is still never read bounded.

The gate reads H2's confirmatory cell on C++ examples against the matched foreign arm

decomposition.design(admitted, foreign_source, h2_withdrawn=...) implements item 1 of the plan above: the pair both ways when Qt and Chromium are admitted, otherwise one Qt cell against foreign_source, one of FOREIGN_SOURCES, refused without Qt admitted. No read takes the source from a caller: registered_design reads FOREIGN_SOURCE, set by the commit that fixes the source before the first H2 development contrast, and H2_WITHDRAWN, set if the foreign pool fails check 4, which leaves H1 alone at the whole family level. The gate, both supplements, registered_read and h1_test_gate all read it, so no source can be tried against a contrast and then chosen. Every confirmatory H2 cell reads its organization's C++ examples (H2_POPULATION, filtered lazily through Restricted, so rows of organizations H2 does not read are never parsed) against the arm foreign_arm(source, sibling) names, one per evaluated half (matched_clusters, through paired_clusters). decomposition_gate keeps H1's verdict on every example and takes the joint shares, the sum and H1 restricted to C++ on the C++ examples, labelling each cell and joint reading with its population; exploratory cells are unchanged. whole_hunk_supplement replaces cpp_supplement: the same matched contrast over every example, reported only. An H2 development read also needs H2 bounds, which only the H2 simulation supplies, so none can run yet. The matched sampler and the partition jobs that train the foreign arms are the next step; no H2 contrast has been run.

Planned before any adapter d_org on s is read: H2 as a Qt cell against a C++-matched foreign adapter

# research(2026-10). Decided in the research-question review of 2026-10-14 (AJ's full-auto grant; the host questions at the end stay his), and revised the same day after an independent review. The mock review panel ranked H2 resting on two pending permissions as the likeliest reason for a continuity acceptance (papers PR #85, org-house-style/REVIEW-PANEL.md, item 1), and the registered rule makes H2 exploratory with near certainty: Chromium's infra-dev list has sent only an automatic reply to the request of 2026-09-23, and its freeze by 2026-10-23 is also blocked on cutting chromium/src below the project and on sub-month fetching past the host's 10,000-result cap (Plan A).

Qt answers the permission request: details through gerrit-admin

Qt answered QTQAINFRA-8064 on 2026-10-14: the ticket is In Progress, and its assignee wrote that the purpose "sounds reasonable" and asked for the details to go to Qt's Gerrit administrators by email. The request sent to them the same day asks for the inline comments and revisions of changes from October 2024 to October 2026, the pilot through test windows (corpus/windows.py), fetched by one client at 2 seconds between requests, with a pause on any 5xx and the identifying User-Agent cli.USER_AGENT; no review text is published, and an author can ask to be removed.

A test read refuses a run whose outcome-neutral battery did not hold

# research(2026-10). The halt rule ("any outcome-neutral test failing halts the study") was enforced on the unplanted runs only for leakage, which writes halted into a run and partitions.partition_run_windows refuses; a failed positive control, manipulation check or non-degeneracy check was recorded in the run's battery and never read. Registered-report guidance applies a registered exclusion rule by the procedure fixed at Stage 1, never case by case (the TU Delft and JBEF Registered Reports guidelines), so the gate now does it: every run a test read takes must carry a battery that held (neutral.recorded_battery, neutral.battery_holds), the likelihood rescorings through the generation run named in scored_from, and cells.require_test_read refuses a report that does not record one for every run file. A rescoring borrows the battery only of the run it scored (neutral.SCORED_IDENTITY: model, rank, seeds, training size, corpora), and a planted run, check 5's, is refused as one of H1's runs. A development read records each run's battery without refusing. All 46 unplanted development runs resolve a battery that held, so no reading changes.

Registration figures follow the registered decoder and corpus v3

# research(2026-10). Three figures on the registration pages and the Stage 1 manuscript came from different artifacts. Each now reads the one its registered setting produced: guided completion and the contamination table from contamination-openstack-6mo-with_context-rp1.0.json (penalty 1.0); the bf16 determinism statement from the 1.0 rerun (2026-10-08 entry), stated as status with the counts left to that entry; and leakage from window-report-openstack-v3.json, the corpus v3 build the frozen manifests count and neutral.py and project_windows.py cite. The manuscript's leakage paragraph quoted the earlier window-report-openstack.json build and is repointed to v3.

Wikimedia at K = 20: detectable effects below the SESOI, the null within nominal at the sizing bound

# research(2026-10). partition-sensitivity-wikimedia-rp1.0-logprob_per_token-k20.json (TIGRIS 256458, pinned at 642f6d9, RUNS=20), the simulation the K coverage rule queued. Pool, noise and shrinkage as at K = 10; 1,000 trials and 4,000 null trials a point, 2,848 planned changes. Detectable effect at one to three cells, in nats per token:

Wikimedia's K under the coverage rule: 20

# research(2026-10). partition-sensitivity-wikimedia-rp1.0-logprob_per_token-k<K>-null.json (TIGRIS 255027 to 255033, pinned at 642f6d9), null only, 4,000 null trials per K, at the 90% sizing bound; K = 10 is the full simulation above. The rule fixed in the previous entry reads this grid.

The H1 simulation on likelihood: detectable effects below the SESOI, and a null that runs hot at K = 10

# research(2026-10). partition-sensitivity-<org>-rp1.0-logprob_per_token.json (TIGRIS 251070 and 251061, pinned at e6fc180), scripts/partition_sensitivity.py --metric logprob_per_token. The pool is each pilot's 22 runs averaged per example and shrunk toward the mean contrast by the share of its spread that is not noise (OpenStack 0.958, Wikimedia 0.701); each simulated run adds the change-by-run noise measured on its pilot (per example 0.1291 and 0.1320, shared by a change 0.0162 and 0.0249) and a run shift calibrated to the pilot's per-run spread. A first version that put all run-to-run spread in the run shift, and one that kept 1/22 of the noise in the truth, were reviewed and replaced before these runs. K = 10 on both, the floor the SESOI sizes; planned changes 2017 and 2848. Detectable effect at one to three cells, in nats per token:

H1 on likelihood: check 5 passes at half and a quarter, and OpenStack carries a contrast

# research(2026-10). Read under the rules fixed in "Planned before any likelihood result is read" above, committed (ea562bf) before the 76 likelihood jobs were pulled. likelihood-partition-*-rp1.0.json, likelihood-sesoi.json (74e8195, computed by rule 3 as fixed in ea562bf, which leaves no free parameter; the job logs committed with it print each run's arm means), partition-pilot-<org>-likelihood.json and -likelihood-total.json.

Planned before any likelihood result is read: H1 on the reference's log-probability

# research(2026-10). Decided with AJ after the check-5 failure above: H1's primary per-example score becomes the mean log-probability per token of the held-out reference under each arm (likelihood_score.py, logprob_per_token), with greedy exact match kept as a registered secondary. Held-out log-likelihood is the log score, a strictly proper scoring rule (Gneiting and Raftery, JASA 2007), and comparing per-author language models by the perplexity they assign a text is the established attribution method (Huang, Murakami and Grieve, PLOS ONE 2025, authorial language models). It needs no decoder, so it cannot drop a convention learned at a minority rate the way greedy decoding does. Sampling-based exact match was rejected: greedy beats the average sample on most benchmarks and sampling adds variance that can reorder models (Song et al., NAACL 2025), and temperature 0 was best for code refinement in a 2024 replication (arXiv:2412.02789).

The rules files against no file and against each other, at penalty 1.0

# research(2026-10). rules-reading-openstack-rp1.0.json, rules-reading-wikimedia-rp1.0.json. The read contrast, distilled own minus sibling, keeps its reading at penalty 1.0 (the rescoring entry above). The contrasts the 2026-10-07 read reported but did not read move, and three now lie wholly beyond the SESOI. Each is a 95% interval over the first ten admissible partitions: