Pre-launch smoke-test fixes, statute-anchored positioning, and a partner offer a channel will carry - #317
Merged
Conversation
Launch-blockers: - Sample report PDF: strip non-WinAnsi glyphs (⚠, Δ) that forced jsPDF into UTF-16 and garbled page 4; replace "DEMO MODE / Connect Supabase" with an honest illustrative-sample banner; correct sample violation_rate (0.015→1.5, was 100x low → flat 100% score, now 99%) and add an illustrative Merkle root. - Serve /install (302 → repo proxy/install.sh) so the docs curl target resolves. - DPA: add controllerPartyName() so the party slot no longer renders the full disclosure sentence mid-clause. Contradictions/typos: pattern count 90→53; latency standardised to <10ms; contractor count → 76,598; HIPAA breach stat $1.9M→$7.42M (IBM 2025); remove "free tier" wording (→ "Scan free / /demo"); fix "a an assessor" and "one-time, one time"; scope /pricing meta to Mode B. Fabricated-metric pages kept but relabelled: prominent illustrative banners on /control-map and /roi; /about "Public Launch/GA" → "Public Preview"; remove the second pricing grid from /changelog. Free→paid gate: /demo snapshot no longer gives away a downloadable report; it now shows an on-screen locked full-report preview with a single $499 unlock. Brand/mobile: per-page OpenGraph titles on 6 shared pages; optimise houndshield-logo.png 1.44MB→87KB; fix /demo phone grid. Repo hygiene: delete stale STATE.md, audit and sponsor files; README leads with install one-liner, live links, and a pointer to the detection patterns. Verified: app tsc 0, lint 0 errors, 3008 tests pass, build exit 0; proxy tsc 0, 92 tests pass; structure guard green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TSBrYp65drrzFV9J1wRyrj
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
Market research (2026-08-21) found both regulatory catalysts had lapsed within sixty days: CMMC Phase 2 enforcement was paused on 13 July, and the HIPAA Security Rule update that would mandate an AI-tool inventory is deferred to at least July 2027. Every urgency claim on the site rested on a date that no longer exists. Two drivers survive the pause, and neither was on the property: - FY2026 NDAA s.1513 directs the Department of War to build an AI/ML security framework and incorporate it into the DFARS and CMMC. A departmental memo can pause its own certification programme; it cannot repeal a statute. - DOJ cyber-specific False Claims Act settlements reached $51.8M in 2025, up 233% year over year. The pause removed the assessor, not the prosecutor. Both are added to lib/compliance/cmmc-status.ts as NDAA_AI and FCA_SCALE so the thirteen surfaces quoting these facts cannot drift, and surfaced on /cmmc-phase-2. Scope is stated precisely and guarded: s.1513 carries no implementation deadline, and s.1532's "covered AI" means adversary-linked providers, NOT ChatGPT or Copilot. Overstating either to a compliance buyer is the failure mode this repo already has scars from. Partner economics: zero partners had signed, and the cause was arithmetic. MSP compliance assessments list at $500-2,000 and MSSPs target 60-75% gross margin, but reselling the identical artifact at its published $499 clears 20%. The trap was the published price itself -- a partner cannot quote more for the same deliverable their client can buy direct. Fixed without moving a price. Retail stays $499 and the flat $100 partner discount stands exactly as the 2026-08-19 ruling set them. What changes is what the partner sells: PARTNER_ENGAGEMENT wraps the report in partner-delivered work (branding, remediation roadmap, client readout) listing at $1,200-1,500, for 67-73% margin funded by their own labour rather than a discount we fund. Three guards added: the margin band must stay inside what a channel carries, wholesale can never be cut to manufacture that margin, and no surface may imply the engagement is a deeper scan -- the engines and artifact are identical. Gates: tsc 0 - lint 0 errors - 3011 tests passing (was 3008) - build exit 0. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TSBrYp65drrzFV9J1wRyrj
thecelestialmismatch
marked this pull request as ready for review
August 22, 2026 01:42
…scanner PR #316 landed on main and rewrote the same surfaces this branch touches: it deleted the fake nine-pattern demo scanner and extracted the real one into a shared components/scan/LocalScanPanel used by both /demo and the after-login /command-center/scanner, with a network-witness proof panel and named sample scenarios. That architecture is better than what this branch had, so the three conflicted files take main's version wholesale. Resolving in main's favour alone would have silently dropped the change the founder asked for: main's commerce mode still hands the visitor a downloadable gap-report PDF for free, which is exactly the give-away this branch removed. So the gate is re-applied on top of the new structure rather than re-litigated -- LocalScanPanel's commerce block now renders the assessor-ready report LOCKED behind a single "Unlock the full report -- $499" CTA, and generatePdf and its now-dead imports and phase are removed. Two guards were updated to describe the new behaviour rather than the old: InstantSnapshot's two download-era tests now assert nothing is ever saved to the device and that the locked CTA is present, and the theme-parity guard keys off "unlock the full report" -- still commerce-only, so it continues to prove a paying customer is never re-sold the product inside their own dashboard. Auto-merge had also produced an await inside a non-async test; corrected. Gates: tsc 0 - lint 0 errors - 3091 tests passing / 222 files - build exit 0. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TSBrYp65drrzFV9J1wRyrj
29 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Three commits. A read-only smoke test of every public flow surfaced launch-blocking defects and self-contradictions; market research then found the positioning was anchored to a deadline that no longer exists and a partner offer no MSP would carry. This PR fixes all three. It does not touch the proxy detection engine, auth, or the database.
f7b5aa4934300d0cd95edmain(PR #316), keeping the $499 gate its version would have droppedChange type
1 — Smoke-test fixes (
f7b5aa4)⚠U+26A0,ΔU+0394) forced those jsPDF text runs into UTF-16. Removed. Replaced the "DEMO MODE — Connect Supabase for real data" banner with an honest illustrative-sample line. Corrected the sampleviolation_rate(0.015was 100× low, forcing the cover score to a flat 100% — now a believable 99%) and added an illustrative Merkle root instead of "N/A"./install— the quickstart'scurl -sSL https://houndshield.com/install | bashtarget was a 404. Now 302-redirects to the canonicalproxy/install.sh.controllerDisclosure()sentence mid-clause, rendering a broken contract. AddedcontrollerPartyName(); the full disclosure stays its own sentence.<10ms; contractor count → 76,598; HIPAA breach stat$1.9M→$7.42M(IBM 2025, correctly labelled); "free tier" → "Scan free → /demo";a an assessor(×4);one-time, one time./control-mapand/roi;/about"General availability" → "Public Preview" (GA contradicted/legal); removed the second pricing grid from/changelog.houndshield-logo.png1.44 MB → 87 KB; fixed a/demogrid forcing 2 columns on phones.2 — Statute-anchored positioning + partner margin (
934300d)Both regulatory catalysts lapsed within sixty days: CMMC Phase 2 enforcement paused 13 July, and the HIPAA Security Rule update that would mandate an AI-tool inventory is deferred to at least July 2027. Every urgency claim rested on a date that no longer exists. Two drivers survive, and neither was on the site:
Added to
lib/compliance/cmmc-status.tsasNDAA_AIandFCA_SCALEso the surfaces quoting these facts cannot drift, and surfaced on/cmmc-phase-2. Scope is stated precisely and guarded: § 1513 carries no implementation deadline, and § 1532's "covered AI" means adversary-linked providers — not ChatGPT or Copilot. Overstating either to a compliance buyer is the failure mode this repo already has scars from.Partner economics. MSP compliance assessments list at $500–$2,000 and MSSPs target 60–75% gross margin, but reselling the identical artifact at its published $499 clears 20% — the trap being the published price itself, since a partner cannot quote more for the same deliverable their client can buy direct. Fixed without moving a price: retail stays $499 and the flat $100 partner discount stands. What changes is what the partner sells —
PARTNER_ENGAGEMENTwraps the report in partner-delivered work (branding, remediation roadmap, client readout) listing at $1,200–$1,500, for 67–73% margin funded by their own labour, not a discount we fund.3 — Merge
main, keep the gate (0cd95ed)PR #316 landed on
mainand rewrote the same surfaces: it deleted the fake nine-pattern demo scanner and extracted the real one into a sharedcomponents/scan/LocalScanPanelused by both/demoand/command-center/scanner. That architecture is better, so the three conflicted files takemain's version wholesale.Resolving in
main's favour alone would have silently dropped a change this branch makes deliberately:main's commerce mode still hands the visitor a downloadable gap-report PDF for free. The gate is therefore re-applied on top of the new structure — the commerce block renders the assessor-ready report locked behind a single "Unlock the full report — $499" CTA, andgeneratePdfplus its now-dead imports and phase are removed. Two guards were updated to describe the new behaviour rather than the old, including the theme-parity guard, which still proves a paying customer is never re-sold the product inside their own dashboard. Auto-merge had also produced anawaitinside a non-async test; corrected.Impact and operating considerations
Operational impact and rollback. The evidence/reporting change is presentation-only: the PDF layout and the sample data it renders. No change to the audit chain, hashing, or scoring — the
violation_ratefix corrects a display value, and the illustrative Merkle root appears only on the watermarked public sample. Removing the free PDF download changes what the public demo gives away; the scan itself, the engines and the local-only boundary are unchanged. Pricing constants are unchanged —PARTNER_ENGAGEMENTis additive and the existing coherence guard still pins $499/$399. The/installroute redirects to a public repository path; it performs no auth and reads no data. Its installer pullsghcr.io/thecelestialmismatch/houndshield-proxy:latest— publishing that image remains an ops step outside this PR. No env vars, migrations, or scheduled work are added. Rollback: revert the commits; no state or configuration is affected.Validation
npx tsc --noEmitnpm run lintnpm run test:coveragenpm run buildnpm run lintnpm run test:coveragenpm run benchResults. Web plane after the merge:
tsc --noEmit→ 0 errors;lint→ 0 errors (35 pre-existing warnings, none in any touched file); test suite → 3091 passed / 222 files;build→ exit 0. Proxy:tsc --noEmit→ 0 errors, 92 passed / 4 files;benchand proxylintwere not re-run because no proxy source changed.node scripts/verify-structure.mjs→ PASS after the file deletions.Manual: rendered the sample PDF and extracted its text — page 4 is clean (no mojibake), the cover shows a 99% score, an illustrative Merkle root, and the illustrative-sample banner. Partner margin verified by executing the shipped constants: $399 wholesale against a $1,200–$1,500 engagement → 67–73%.
Review checklist
Deferred (flagged, not in this PR): the large repo cleanup (
skills/,agents/,rules/≈ 8 MB) is pinned byscripts/verify-structure.mjsand needs that guard updated in tandem.f48d464onmainchanged homepage competitor naming to categories rather than brands; the market research argues the opposite for/compare(named category presence) — reconciling the two is a follow-up, not resolved here.STRIPE_WEBHOOK_SECRET, the GHCR image publish, and incorporation remain founder/ops actions; incorporation in particular blocks partner outreach, since an unincorporated counterparty is a real objection for an accreditation-dependent firm.Generated by Claude Code