Annotate output is not reproducible: properties[] order varies between runs on identical sources
@avillar ci sta già lavorando.
Dal 8/10/2026.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 56/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- github-actions, python
- Ambito
- build-system
Direzione di ricerca
Start by tracing how the postprocess builds and serializes properties[] in the outputs under build/annotated/, especially resolvedProperties.json; the issue provides a concrete example with three sibling entries changing order. Reproduce with identical inputs and check whether iteration over an unordered collection determines the output. Done when repeated runs produce byte-stable ordering for these outputs without changing their contents.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Running the postprocess twice over byte-identical sources produces build/annotated/** output that differs only in the order of the properties[] array. The entries are the same; their positions move.
Because this output is committed in our repository, every run looks like a ~1300-file change that contains no change at all, which makes "regenerate and compare" unusable as a check and buries real diffs.
Evidence
Two runs of validate-and-process.yml@v1 (skip-pages: true), producing commits 9496e7c15 and 88eedbaf6 in amds-ldeo/geochemBuildingBlocks. Between those two commits:
_sources/— 0 files changedtappsubmodule — unchangedbblocks-config.yaml— unchanged- the only non-
build/changes were one GitHub Actions workflow file and a docstring in a tool neither the postprocess nor the schemas read
so the postprocess input was identical. Yet:
build/— 1310 files changed, +166607 −166607 (symmetric)- 40 of 40 sampled JSON outputs are order-insensitively identical (comparison canonicalising both dict key order and list element order); 0 genuinely different
- affected output kinds:
resolvedProperties.json(131),index.json(198),_report.json(242),schema-oas3.0.json/.yaml
Minimal example
build/annotated/BaseSchema/tappDefinition/resolvedProperties.json — 215 properties[] entries in both runs, identical multiset, 3 positions differing, a clean rotation:
[123] A: schema:actionProcess.schema:step.schema:additionalProperty.schema:unitText
B: schema:actionProcess.schema:step.schema:additionalProperty.schema:name
[124] A: schema:actionProcess.schema:step.schema:additionalProperty.schema:name
B: schema:actionProcess.schema:step.schema:additionalProperty.schema:propertyID
[125] A: schema:actionProcess.schema:step.schema:additionalProperty.schema:propertyID
B: schema:actionProcess.schema:step.schema:additionalProperty.schema:unitText
Three sibling properties of one object, emitted in a different order each run. That pattern — a small group of siblings rotating — is what an unordered collection (a set, or a dict built in traversal order and iterated without sorting) looks like when it reaches the output.
Suggested fix
Sort properties[] before serialising — by path (and id as a tiebreak) would be stable and also easier to read. More generally, any collection that reaches committed output needs a defined order.
We hit the same class of bug in our own generators and fixed it the same way; we also added a CI check that regenerates under two different PYTHONHASHSEED values and compares, which catches exactly this. If the ordering here derives from set/dict iteration, that check would likely reproduce it in your CI cheaply.
Why it matters downstream
build/annotated/** is committed in our repository because our Pages deploy reads it without regenerating. With non-deterministic ordering:
- a "regenerate and diff" check cannot distinguish a real change from reordering
- every source change produces a large spurious diff, so genuine changes are not reviewable
- the postprocess reports success, so nothing signals that the output is unstable
Happy to supply fuller diffs, the comparison script, or run an instrumented build if that helps isolate it.
Environment
opengeospatial/bblocks-postprocess/.github/workflows/validate-and-process.yml@v1, defaultimage_tag- observed 2026-10-07
- Lingua principale
- Python
- Stelle
- 1
- Fork
- 6
- Merge medio
- 1m
- PR unite (30g)
- 1
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di opengeospatial/bblocks-postprocess
-
if no bblocks highlighted, assume all are.Forse già presa @avillar l’ha presa 1 giorno fa. Aperta
opengeospatial/bblocks-postprocess#96 · 3 commenti · 1 assegnatario ·
-
JSON schema library version review.Forse già presa @avillar l’ha presa 19 giorni fa. Aperta
opengeospatial/bblocks-postprocess#89 · 3 commenti · 1 assegnatario ·
-
Test failures cannot distinguish advisory SHACL results (sh:Warning / sh:Info) from sh:ViolationAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 68/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
opengeospatial/bblocks-postprocess#86 · 2 commenti ·
Tutte le issue di opengeospatial/bblocks-postprocess
Issue simili
-
[Bug] Unit tests reach real Bedrock call paths without patching the modelForse già presa @proton0210 l’ha presa oggi. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
aws-samples/sample-aws-genai-db-modernizer#1318 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
pyarrow-25.0.1-cp310-cp310-manylinux_2_28_x86_64.whl: 1 vulnerabilities (highest severity is: 5.3)ApertaMend: dependency security vulnerability
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
capitalone/locopy#394 ·
-
[Bug] Unhandled ValueError terminates watchdog thread when GISRC value contains multiple colonsApertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
sdk-typescript: unquoted COPY globs in shell form are silently dropped from the image build contextApertabug javascript
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
ietf-tools/datatracker#11922 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno