Skip to content

Fix/schema rules and hardening - #40

Merged
jaanisoe merged 16 commits into
mainfrom
fix/schema-rules-and-hardening
Oct 7, 2026
Merged

jaanisoe merged 16 commits into
mainfrom
fix/schema-rules-and-hardening

Conversation

@jaanisoe

@jaanisoe jaanisoe commented Oct 7, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

chacha20poly1305 and blake2 0.11 only zeroize behind a feature the
workspace never enabled, so their copies of the keys stayed in freed
memory. A compile-time test now catches the feature going missing.

Rewrap also returns an error instead of panicking when the random source
fails, and two comments that described the wrong mechanism are fixed.
parquet reserves column metadata for every schema leaf, so an 8 MB
footer with a flat schema of a million leaves made it hold over 400 MB
before refusing the file. Ours has a dozen elements.

parquet 60 no longer panics on the old fixtures, which left the
read-path and readiness panic boundaries untested. A new malformed file
and a fault point reach them again, and a file with no page index at all
is covered.
The prune walked the record's subject once per statement, so a catalog
of 3,000 datasets took seconds to render. It now visits each node once,
and also removes a named node that a drop has cut loose.
The render fixture left these fields empty, so a min/max swap would only
have shown up as a changed snapshot.
The manifest and overlay schemas now state what the validator enforces:
the contact point's fields and e-mail pattern, the age cap, the bounds
on localized text and the closed vocabularies. A test checks that the
schemas and the node refuse the same values.

A closed list now also refuses a value listed twice, and lint and
validate share one list of recommended fields, so lint flags a missing
health theme too.
A remembered contact point is checked before it is offered, so a
hand-edited mailto: prefix no longer ends up doubled. The fix-up prompts
follow the new-package rules: an e-mail with or without mailto:, the
length caps, and an upper-cased org.
The error now carries its cause chain, so a refused connection, an
unknown host and a bad certificate read differently. A 502, 503 or 504
from an ingress is treated like a node that is still starting.
The suggested chmod command broke on a path with a space, and the
credentials error blamed an empty [profiles.<name>.s3] block when the
block was missing altogether.
The agreement test dropped the age range, provenance and health theme on
the way to the rendered record. It now destructures the package in full,
so a new field can't be skipped, and the fixtures carry those fields.
Two fault tests shared dataset ids with tests that run beside them under
cargo test, and the serial-key guard missed arm_panic and arm_io; it now
reads the arming functions from faults.rs. The shared stored manifest is
valid again, an s3 assertion that could never fail now can, and
overlay_change is checked field by field.
The source stripper miscounted braces in '{' and /* } */, and the
run-full needle guard missed a wait_log after until, while, elif, {,
time or an env prefix.
With CARGO_TARGET_DIR set, cargo built elsewhere and the harness ran the
stale binary in target/release.
Like the e2e scripts, the chaos harness now checks the ports its stack
publishes before compose up, reading them from the rendered config.
GDI_TOOL__* overrides are now dropped along with the config dir, and
coverage and mutants run isolated too. The fuzz runs also set a
per-input timeout: libFuzzer's default of 1,200 s never fires in a 60 s
run.
The publisher isn't verified, so the tag alone could be re-pushed.
The release step's version grep, the fuzz lockfile scan, the README's
downloads and wait loop, the harness rebuild note, the localised
overlay fields and a few doc comments.
@jaanisoe
jaanisoe merged commit 9001c28 into main Oct 7, 2026
27 checks passed
@jaanisoe
jaanisoe deleted the fix/schema-rules-and-hardening branch October 7, 2026 09:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant