Skip to content

fix: GA-launch hardening pass#39

Merged
Coding-Dev-Tools merged 2 commits into
mainfrom
fix/ga-launch-hardening
Jul 21, 2026
Merged

fix: GA-launch hardening pass#39
Coding-Dev-Tools merged 2 commits into
mainfrom
fix/ga-launch-hardening

Conversation

@Coding-Dev-Tools

Copy link
Copy Markdown
Owner

Six independent code fixes: tree-sitter-language-pack pin (offline 403 fix), AST-indexer regex fallback on runtime failure, service-mode fail-closed on invalid value, pre-migration DB snapshot, trial-claim key response headers + retention sweep, and a paid coming-soon gate (ENGRAPHIS_PAID_AVAILABLE) so Buy Pro/Team can't charge before the vendor side is live.

…sed, pre-migration DB backup, trial-claims retention+headers, AST-fallback resilience, paid coming-soon gate)

Independent fixes, no secrets/infra involved:

- pyproject.toml: pin tree-sitter-language-pack==0.9.0. 1.x lazily downloads grammar
  binaries from a GitHub release at import time, which 403s offline and makes
  index_repo silently index 0 files.
- backends/codegraph.py: CompositeSymbolIndexer.index_file now falls back to the
  regex indexer if the AST backend raises at runtime (e.g. the above), instead of
  propagating the failure or silently producing nothing.
- config.py: an explicitly-set invalid ENGRAPHIS_SERVICE_MODE now exits the process
  instead of silently coercing to combined, which would merge the vendor and
  customer trust domains on a typo. Unset still defaults to combined.
- core/store.py: init_schema takes a best-effort pre-migration snapshot
  (<db>.pre-migration-v4.bak via SQLite's online backup API) before the v4
  canonicalization/edge-support backfills, gated to real upgrades only.
- inspector/license_cloud.py: claim_trial_license's response (which carries the raw
  license key) now sends Cache-Control: no-store + Referrer-Policy: no-referrer;
  added a global retention sweep on trial_claims so confirmed/claimed rows don't
  grow the table unbounded (previously only unconfirmed-expired rows were swept).
- licensing.py: new ENGRAPHIS_PAID_AVAILABLE gate (default off) routes upgrade_url()
  to an informational coming-soon page instead of the live Polar checkout, so a
  free launch's Buy Pro/Team button can't charge a customer before the vendor side
  is wired. Explicit ENGRAPHIS_*_UPGRADE_URL overrides still always win. Also warns
  in production_warnings() if paid is enabled while VENDOR_SIGNER_RELEASE_READY is
  still False.

Deliberately NOT touched: VENDOR_SIGNER_RELEASE_READY (business go-live decision,
not a bug fix), any Railway/Polar/Resend env vars or DNS (require account access
I don't have), and the NOTICE/CHANGELOG/SECURITY wording pass (needs verification
against actual current bundling status I haven't confirmed).
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

- test_config: service_mode now fail-closed (sys.exit) instead of
  silent fallback to 'combined' — test updated to expect SystemExit
- test_licensing: upgrade_url defaults to coming-soon page (engraphis.com)
  until ENGRAPHIS_PAID_AVAILABLE=1 — split into two tests covering both
  paths; require_feature message match updated from polar.sh to engraphis.com

Fixes CI failures on PR #39 (all 4 jobs: core-floor 3.9 + full-stack 3.10/3.11/3.12)
@Coding-Dev-Tools
Coding-Dev-Tools merged commit 1ce571c into main Jul 21, 2026
8 checks passed
@Coding-Dev-Tools
Coding-Dev-Tools deleted the fix/ga-launch-hardening branch July 21, 2026 09:24
@Coding-Dev-Tools

Copy link
Copy Markdown
Owner Author

Pre-PR Code Review — APPROVE (post-merge record)

Reviewer: Hermes Pre-PR Code Reviewer (automated)
Verdict: ✅ APPROVE — merged via squash

Summary

Six independent hardening fixes for GA launch. All changes are defensive, well-documented, and properly tested.

Analysis

Area Finding
Bugs None found. AST fallback logic is correct (re-raises if fallback also unsupported). Retention sweep arithmetic is correct.
Security Improved. Service-mode fail-closed prevents trust-domain merge on typo. Trial-key response gets no-store + no-referrer headers. Paid-available gate prevents accidental charges before signer rotation.
Quality Tests updated for all behavioral changes. CI green on 3.9/3.10/3.11/3.12 + docker + a11y + wheel.
Regressions None. tree-sitter-language-pack pin to 0.9.0 fixes the offline 403 without breaking the regex fallback path.

All 8 CI checks passed. Merged 2026-07-21.

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