Skip to content

Productionise masque-bricks + reposition README#1

Open
carlosfunk wants to merge 4 commits into
mainfrom
dm-3824-productionise
Open

Productionise masque-bricks + reposition README#1
carlosfunk wants to merge 4 commits into
mainfrom
dm-3824-productionise

Conversation

@carlosfunk

@carlosfunk carlosfunk commented Jun 26, 2026

Copy link
Copy Markdown
Member

Updates masque-bricks and repositions its README for public, self-served use.

  • Add SECURITY.md
  • update README
  • added GitHub metadata

Hardening:

  • verify_ssl configurable + default-secure; stop blanket warning suppression.
  • Quote/validate SQL identifiers (remove f-string injection).
  • Fix run/mask base-directory mutual-corruption bug; fix client_id[:8] TypeError; stop printing client_id.
  • Placeholder token/username in example config; sample ruleset masks all PII columns.
  • Retry/backoff; dead-code removal. Tests added.

Repositioning: native Databricks masking presented as recommended default; masque-bricks framed as the retained out-of-place Delta pipeline.

@carlosfunk carlosfunk changed the title Productionise masque-bricks + reposition README (DM-3831, DM-3832, DM-3825) Productionise masque-bricks + reposition README Jul 13, 2026
@carlosfunk
carlosfunk force-pushed the dm-3824-productionise branch from f4e4def to d0ea18c Compare July 14, 2026 02:17
@carlosfunk
carlosfunk marked this pull request as ready for review July 14, 2026 02:29
- reframe the README around native Databricks masking as the default, with masque-bricks as the retained out-of-place option
- lead with the value proposition ("synthetically identical customer data") plus learn-more and demo links
- link the native Databricks masking docs and canonicalise the documentation URLs
- add SECURITY.md with a private vulnerability-disclosure path
- normalise the LICENSE to canonical Apache 2.0 text with "DataMasque Ltd" as copyright holder
- use obvious placeholders in the example config and document the OAuth and verify_ssl options
- run pytest via uv on pushes to main and on pull requests
- quote and validate SQL identifiers, formats, and S3 paths to remove f-string injection
- make TLS verification configurable and default-secure, suppressing warnings only when explicitly opted out
- give run and mask distinct connection names so neither can mask the wrong prefix
- retry idempotent DataMasque calls with backoff and tolerate transient errors while polling a run
- stop printing the client id and fix the client_id[:8] TypeError during check
- use UTC timestamps for S3 path segments and drop dead S3 helpers and unused format flexibility
- mask sample-ruleset PII columns with DataMasque built-in seed files for realistic output
- add unit tests for config loading, connection naming, SQL quoting, and the DataMasque client
- add s3_uri slash-normalisation tests
- declare pytest as a dev optional-dependency and lock it
@carlosfunk
carlosfunk force-pushed the dm-3824-productionise branch from d0ea18c to 62e0468 Compare July 14, 2026 02:42
@carlosfunk carlosfunk self-assigned this Jul 14, 2026
@carlosfunk
carlosfunk requested a review from jiatolentino July 14, 2026 22:25
Comment thread src/masque_bricks/cli.py
Comment on lines +36 to +38
slug = "_".join(p for p in (bucket, base_directory.strip("/")) if p)
safe = "".join(c if c.isalnum() else "_" for c in slug)
return f"masque_bricks_{role}_{safe}"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/, -, _ all slug to _, so raw/users and raw-users get the same connection name, which is the wrong-prefix reuse this was meant to prevent. Maybe worth tightening?

Comment thread README.md
Comment on lines 71 to 73
```bash
pip install -e .
masque-bricks --help

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pip install -e . ignores uv.lock and the >= floors can pull breaking majors. Have we considered dropping it for uv sync?

)
adapter = HTTPAdapter(max_retries=retry)
self.session.mount("https://", adapter)
self.session.mount("http://", adapter)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

connect inherits total, so check now sits for ~14s before it reports a down instance. Would it be better to set connect=0 to let it fail fast while polling keeps the retries?

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.

2 participants