@enwithai/product-check 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/ATTRIBUTION.md +52 -0
  2. package/CHANGELOG.md +31 -0
  3. package/LICENSE +21 -0
  4. package/NOTICE.md +18 -0
  5. package/README.md +171 -2
  6. package/SECURITY.md +27 -0
  7. package/TRADEMARKS.md +23 -0
  8. package/dashboard/README.md +6 -0
  9. package/dashboard/dashboard.css +489 -0
  10. package/dashboard/dashboard.js +90 -0
  11. package/dist/blueprint/build.d.ts +27 -0
  12. package/dist/blueprint/build.js +363 -0
  13. package/dist/blueprint/candidates.d.ts +10 -0
  14. package/dist/blueprint/candidates.js +86 -0
  15. package/dist/cli/main.d.ts +2 -0
  16. package/dist/cli/main.js +17 -0
  17. package/dist/cli/run.d.ts +13 -0
  18. package/dist/cli/run.js +511 -0
  19. package/dist/contract/contract.d.ts +32 -0
  20. package/dist/contract/contract.js +184 -0
  21. package/dist/contract/safety.d.ts +11 -0
  22. package/dist/contract/safety.js +68 -0
  23. package/dist/dashboard/render.d.ts +5 -0
  24. package/dist/dashboard/render.js +345 -0
  25. package/dist/discovery/git.d.ts +13 -0
  26. package/dist/discovery/git.js +139 -0
  27. package/dist/discovery/gitignore.d.ts +15 -0
  28. package/dist/discovery/gitignore.js +98 -0
  29. package/dist/discovery/pops.d.ts +26 -0
  30. package/dist/discovery/pops.js +296 -0
  31. package/dist/discovery/repo.d.ts +35 -0
  32. package/dist/discovery/repo.js +231 -0
  33. package/dist/errors.d.ts +27 -0
  34. package/dist/errors.js +32 -0
  35. package/dist/evidence/collector.d.ts +41 -0
  36. package/dist/evidence/collector.js +71 -0
  37. package/dist/importers/har.d.ts +3 -0
  38. package/dist/importers/har.js +86 -0
  39. package/dist/importers/reports.d.ts +38 -0
  40. package/dist/importers/reports.js +84 -0
  41. package/dist/importers/tests.d.ts +24 -0
  42. package/dist/importers/tests.js +99 -0
  43. package/dist/index.d.ts +18 -0
  44. package/dist/index.js +19 -0
  45. package/dist/inspectors/http/fetch.d.ts +18 -0
  46. package/dist/inspectors/http/fetch.js +171 -0
  47. package/dist/inspectors/http/observe.d.ts +60 -0
  48. package/dist/inspectors/http/observe.js +110 -0
  49. package/dist/inspectors/source/facts.d.ts +60 -0
  50. package/dist/inspectors/source/facts.js +268 -0
  51. package/dist/reporting/escape.d.ts +14 -0
  52. package/dist/reporting/escape.js +53 -0
  53. package/dist/reporting/markdown.d.ts +19 -0
  54. package/dist/reporting/markdown.js +169 -0
  55. package/dist/run.d.ts +24 -0
  56. package/dist/run.js +451 -0
  57. package/dist/schema/registry.d.ts +14 -0
  58. package/dist/schema/registry.js +43 -0
  59. package/dist/schema/validator.d.ts +26 -0
  60. package/dist/schema/validator.js +282 -0
  61. package/dist/scoring/score.d.ts +12 -0
  62. package/dist/scoring/score.js +144 -0
  63. package/dist/scoring/verdict.d.ts +26 -0
  64. package/dist/scoring/verdict.js +81 -0
  65. package/dist/types.d.ts +486 -0
  66. package/dist/types.js +10 -0
  67. package/dist/util/hash.d.ts +4 -0
  68. package/dist/util/hash.js +16 -0
  69. package/dist/util/paths.d.ts +2 -0
  70. package/dist/util/paths.js +28 -0
  71. package/dist/util/redact.d.ts +15 -0
  72. package/dist/util/redact.js +56 -0
  73. package/dist/validation/app-evaluators.d.ts +5 -0
  74. package/dist/validation/app-evaluators.js +332 -0
  75. package/dist/validation/catalog.d.ts +54 -0
  76. package/dist/validation/catalog.js +1447 -0
  77. package/dist/validation/context.d.ts +64 -0
  78. package/dist/validation/context.js +28 -0
  79. package/dist/validation/engine.d.ts +17 -0
  80. package/dist/validation/engine.js +160 -0
  81. package/dist/validation/import-evaluators.d.ts +5 -0
  82. package/dist/validation/import-evaluators.js +339 -0
  83. package/dist/validation/integrity.d.ts +7 -0
  84. package/dist/validation/integrity.js +118 -0
  85. package/dist/validation/retest.d.ts +14 -0
  86. package/dist/validation/retest.js +170 -0
  87. package/dist/validation/source-evaluators.d.ts +18 -0
  88. package/dist/validation/source-evaluators.js +900 -0
  89. package/dist/validation/tiers.d.ts +21 -0
  90. package/dist/validation/tiers.js +104 -0
  91. package/dist/version.d.ts +2 -0
  92. package/dist/version.js +9 -0
  93. package/package.json +75 -4
  94. package/schemas/blueprint.schema.json +456 -0
  95. package/schemas/common.schema.json +127 -0
  96. package/schemas/evidence.schema.json +131 -0
  97. package/schemas/finding.schema.json +166 -0
  98. package/schemas/observations.schema.json +167 -0
  99. package/schemas/pop-coverage.schema.json +117 -0
  100. package/schemas/product-check-results.schema.json +427 -0
  101. package/schemas/release-verdict.schema.json +160 -0
  102. package/schemas/scan-contract.schema.json +401 -0
  103. package/schemas/scorecard.schema.json +459 -0
  104. package/schemas/validation.schema.json +144 -0
package/ATTRIBUTION.md ADDED
@@ -0,0 +1,52 @@
1
+ # Attribution and provenance
2
+
3
+ ## Publisher
4
+
5
+ - **Project:** Product Check (`@enwithai/product-check`).
6
+ - **Commons:** EnWithAI Engineering Commons. Question: _does this software work, can it be trusted, and what needs to
7
+ improve?_
8
+ - **Copyright holder:** EnWithAI Technologies (as stated in [LICENSE](LICENSE)).
9
+ - **License:** MIT (decided 2026-10-12, same as the other Commons tools). It applies to all code, documentation, schemas
10
+ and examples in this repository.
11
+ - **Maintainer:** Koushik Ramani ([@aiwithrk](https://github.com/aiwithrk)), EnWithAI Technologies.
12
+ - **Contact:** [hello@enwithai.com](mailto:hello@enwithai.com)
13
+ - **Security issues:** see [SECURITY.md](SECURITY.md).
14
+
15
+ ## Development provenance
16
+
17
+ Product Check was written for this repository with substantial AI assistance (Claude Code), directed and reviewed by
18
+ the project's human sponsor. Commits carry a `Co-Authored-By` trailer. It has **no runtime dependencies** and contains
19
+ no vendored third-party code. Test fixtures and the demo application are synthetic; credential-like strings in them
20
+ are generated at run time and are not real.
21
+
22
+ ## Built on
23
+
24
+ | Upstream | Version | License | How Product Check uses it |
25
+ | ------------------------------------------------------------------------ | -------------- | ------- | ----------------------------------------------- |
26
+ | [Node.js](https://nodejs.org) | 22 / 24 / ≥ 26 | MIT | Runtime only (built-in `fetch`, `crypto`, `fs`) |
27
+ | [JSON Schema](https://json-schema.org) | draft 2020-12 | — | Contract format for every artifact |
28
+ | JUnit XML (de facto format) | — | — | Input format for executed test results |
29
+ | [HAR 1.2](https://w3c.github.io/web-performance/specs/HAR/Overview.html) | 1.2 (draft) | — | Input format for recorded browser traffic |
30
+
31
+ Development tools (TypeScript, Vitest, ESLint, typescript-eslint, Prettier, Ajv) are not distributed. Design
32
+ references are in [REFERENCES.md](REFERENCES.md). Listing a project does not mean its maintainers endorse Product Check.
33
+
34
+ ## Frameworks
35
+
36
+ | Framework | Owner | Relationship | Note |
37
+ | ---------------- | ---------------------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
38
+ | CLEAR (CLEAR CT) | NetworkGain Consulting | `inspired` | The design of the assessment model — separate Customer, Technology and Trust pillars, CT-T0…T6 lifecycle tiers, points of presence, evidence statuses, the rule that strong pillars never hide weak ones, and hard gates overriding scores — was inspired by NetworkGain's CLEAR CT method (v3.1, internal and unpublished). No text, catalog, prompt or scoring table from it is reproduced, and there is no structural relationship. Wording approved for publication on 2026-10-12. |
39
+ | TRACE | EnWithAI Technologies | `not-assessed` | Each finding carries an intent → evidence → remediation → retest chain, which may match TRACE's intent; alignment cannot be stated until the TRACE specification is available. |
40
+
41
+ ## Ecosystem
42
+
43
+ Product Check is independently usable. It has no dependency on CrewPE, any EnWithAI service or NetworkGain, and it
44
+ contacts no service except an origin the user explicitly authorizes. CrewPE is EnWithAI's enterprise engineering
45
+ lifecycle product and could consume Product Check's JSON results and work packets in governed workflows; no such
46
+ integration exists today. NetworkGain Consulting contributes enterprise value and governance perspective to the
47
+ Commons; using Product Check creates no obligation to engage it.
48
+
49
+ ## Not affiliated
50
+
51
+ Product Check is not affiliated with, endorsed by or certified by GitHub, Vercel, Supabase, OpenAI, Anthropic, Stripe,
52
+ Google, the OWASP Foundation, the W3C or any framework vendor named in its rules or documentation.
package/CHANGELOG.md ADDED
@@ -0,0 +1,31 @@
1
+ # Changelog
2
+
3
+ All notable changes are documented here. The format follows Keep a Changelog; versions follow SemVer (pre-1.0: minor
4
+ versions may break the results schema, which carries its own `schema_version`, and the rubric, which carries
5
+ `rubric_version`).
6
+
7
+ ## Unreleased
8
+
9
+ ## 0.1.0 — 2026-10-12
10
+
11
+ First release without a pre-release suffix, so `npm install @enwithai/product-check` and `npx @enwithai/product-check` work without a
12
+ tag. No functional changes from 0.1.0-alpha.0. Still pre-1.0: the report schema and command options may change in minor
13
+ versions.
14
+
15
+ ## 0.1.0-alpha.0 — 2026-10-12 (published to npm)
16
+
17
+ First alpha. MIT licensed.
18
+
19
+ - `product-check run|retest|scan|init|validate|report|blueprint|dashboard|controls|schema`.
20
+ - Scan → Test → Validate → Blueprint → Dashboard → (advisory) Remediate → Retest, recorded per run.
21
+ - 47 controls across Customer, Technology and Trust, lifecycle tiers CT-T0…CT-T6 with carry-forward, three hard gates.
22
+ - Source inspection (read-only; git metadata parsed without running git; ignored files never read), passive HTTP
23
+ probe (authorized origin only; optional exposure probe), HAR and recorded-observation replay.
24
+ - Importers: JUnit XML, Jest/Vitest JSON, `npm audit --json`, Spec Check 1.0, Impact Check 2.0, Outcome Check 1.0;
25
+ contract `control_mappings` link executed tests to any control.
26
+ - Scoring with coverage, confidence, caps and withheld scores; verdict rules; risk acceptances (never for P0).
27
+ - Blueprint with as-is/to-be, remediations, work packets, regression-test candidates, test architecture, traceability.
28
+ - Retest with stable finding IDs, preserved baseline evidence, RESOLVED only with new evidence, PC-T-16 regressions.
29
+ - JSON Schemas (2020-12) for every artifact; built-in validator plus integrity/recomputation checks.
30
+ - Self-contained dashboard (five views, light/dark, accessible, hash-pinned script).
31
+ - Synthetic Vibe Notes demo with baseline, retest, repository-only and aborted examples.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 EnWithAI Technologies
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/NOTICE.md ADDED
@@ -0,0 +1,18 @@
1
+ # NOTICE
2
+
3
+ Product Check
4
+ Copyright (c) 2026 EnWithAI Technologies
5
+
6
+ Product Check is licensed under the MIT License (see [LICENSE](LICENSE)). This NOTICE adds no conditions to that
7
+ license.
8
+
9
+ ## Third-party material
10
+
11
+ Product Check has **no runtime dependencies** and contains no vendored source code. It reads formats defined by others
12
+ (JSON Schema, JUnit XML, HAR, `npm audit` JSON, and the report schemas of Spec Check, Impact Check and Outcome Check);
13
+ no code from those projects is included.
14
+
15
+ ## Trademarks
16
+
17
+ EnWithAI, CrewPE, CLEAR, TRACE, NetworkGain and related names are not licensed by this repository. See
18
+ [TRADEMARKS.md](TRADEMARKS.md).
package/README.md CHANGED
@@ -1,3 +1,172 @@
1
- # Temporary Holding Version
1
+ # Product Check
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ **Does this software work, can it be trusted, and what needs to improve?**
4
+ _Scan. Validate. Blueprint. Improve._ Evidence-led product assurance and software blueprinting.
5
+
6
+ Product Check looks at your **repository**, your **deployed app**, or **both**, checks them against a catalog of
7
+ Customer, Technology and Trust controls, and gives you:
8
+
9
+ - **findings backed by evidence**: file and line, or the exact HTTP response, with a checksum and a redacted excerpt;
10
+ - **three separate scores** (Customer, Technology, Trust), each with coverage and confidence, never averaged together;
11
+ - a **readiness verdict** (`READY`, `READY_WITH_CONDITIONS`, `NOT_READY`, `INCONCLUSIVE`) that hard gates can block
12
+ and that states exactly what it does and does not cover;
13
+ - an **engineering blueprint**: prioritized fixes, acceptance criteria, regression-test candidates and one
14
+ **work packet** per fix that you (or any coding agent) can act on;
15
+ - a **local dashboard** and a **retest** loop that shows verified fixes, regressions and trends.
16
+
17
+ Everything is written to one versioned JSON file. The report, blueprint and dashboard are renderings of it.
18
+
19
+ > Status: **early release** (`0.1.0`, pre-1.0, results schema `0.1.0`). Install with
20
+ > `npm install --global @enwithai/product-check`, or build from source as in the demo below.
21
+
22
+ ## What it will not pretend
23
+
24
+ Untested is never passed. Product Check reports `BLOCKED` or `NOT_TESTED` (with the reason) for anything it could not
25
+ check, lowers coverage accordingly, and withholds a score when evidence is thin. It is **not** a penetration test, a
26
+ compliance certification or a guarantee of production readiness. It never runs your repository's code, never logs in,
27
+ never submits forms and never sends anything anywhere except passive GET requests to an origin you authorize.
28
+
29
+ ## Two-minute demo
30
+
31
+ Requires Node.js 22, 24 or ≥ 26, and git. No account, no network, no runtime dependencies.
32
+
33
+ ```bash
34
+ git clone https://github.com/enwithai/product-check.git && cd product-check
35
+ npm ci --ignore-scripts && npm run build
36
+ cd examples/vibe-app-demo
37
+ node create-app.mjs # generates a deliberately weak, synthetic vibe-coded app in ./app
38
+ node ../../dist/cli/main.js run --contract scan-contract.json --observations inputs/observations-baseline.json --out-dir output/baseline
39
+ ```
40
+
41
+ ```text
42
+ Verdict: NOT_READY at CT-T2 ("NOT READY")
43
+ - Hard gate failed: G-SECRETS.
44
+ - 8 open P0 finding(s).
45
+ - 1 open P1 finding(s).
46
+ Customer 40/100 (coverage 77%, confidence MEDIUM)
47
+ Technology 4/100 (coverage 80%, confidence MEDIUM)
48
+ Trust 2/100 (coverage 67%, confidence MEDIUM)
49
+ ```
50
+
51
+ Then apply the fixes and retest against that baseline (the app's own tests were run against its fixed build and
52
+ their JUnit output is in `inputs/`):
53
+
54
+ ```bash
55
+ node create-app.mjs --remediate
56
+ node ../../dist/cli/main.js retest --contract scan-contract.json --observations inputs/observations-remediated.json \
57
+ --test-results inputs/test-results-remediated.xml --baseline output/baseline/product-check-results.json --out-dir output/retest
58
+ open output/retest/dashboard.html # or xdg-open / start
59
+ ```
60
+
61
+ ```text
62
+ Verdict: READY_WITH_CONDITIONS at CT-T2 ("CONDITIONAL")
63
+ - 2 open P2 finding(s).
64
+ Customer 100/100 (coverage 92%, confidence HIGH)
65
+ Technology 94/100 (coverage 100%, confidence MEDIUM)
66
+ Trust 97/100 (coverage 83%, confidence HIGH)
67
+ Retest vs PCR-20261014T100000Z-7386B1: 35 verified fixed, 0 new, 0 reopened, 0 regressed control(s)
68
+ ```
69
+
70
+ The two remaining P2s (no error monitoring, no AI evaluation suite) are real gaps in the fixed demo app. A
71
+ [repository-only scan](examples/repo-only/report.md) of the same weak app shows the other side of honesty: Customer
72
+ and Trust are **not scored** because, without the running app, too little could be checked.
73
+
74
+ The committed [baseline](examples/vibe-app-demo/output/baseline/report.md) and
75
+ [retest](examples/vibe-app-demo/output/retest/report.md) outputs are what these commands produce (the test suite
76
+ checks that). See [examples/vibe-app-demo](examples/vibe-app-demo/README.md) for the live version, where the probe
77
+ talks to a local stand-in deployment of the demo app.
78
+
79
+ ## Use it on your project
80
+
81
+ ```bash
82
+ # Your repository (read-only; nothing is executed):
83
+ product-check run --repo .
84
+
85
+ # Your deployed app (only if you own it or may test it): passive GETs to fixed paths on that origin.
86
+ product-check run --repo . --url https://your-app.example --authorize passive-http
87
+
88
+ # Also check whether /.env or /.git are publicly served (more intrusive; separately authorized):
89
+ product-check run --repo . --url https://your-app.example --authorize passive-http,exposure-probe
90
+
91
+ # Add evidence you already have:
92
+ npx vitest run --reporter=junit --outputFile=junit.xml # or jest-junit, playwright --reporter=junit, pytest --junitxml
93
+ npm audit --json > npm-audit.json
94
+ product-check run --repo . --test-results junit.xml --npm-audit npm-audit.json --stage PRE_LAUNCH
95
+ ```
96
+
97
+ Results go to `.product-check/`: `product-check-results.json`, `report.md`, `blueprint.md`, `work-packets/*.md` and
98
+ `dashboard.html` (open it directly; no server). After changing things, run
99
+ `product-check retest --baseline .product-check/product-check-results.json …` with the same inputs.
100
+
101
+ No deployed URL you can scan? Export a HAR file from your browser's DevTools on your app and pass `--har app.har`.
102
+
103
+ For repeatable setups, `product-check init --repo . --url … --stage …` writes a
104
+ [scan contract](docs/assessment-model.md#the-scan-contract) you can edit: declare tenancy, personal data and AI use,
105
+ critical journeys, risk acceptances, and **control mappings** that link your own executed tests (for example
106
+ authorization or tenant-isolation tests) to the controls Product Check cannot test by itself.
107
+
108
+ ## Commands
109
+
110
+ | Command | What it does |
111
+ | ---------------------------------- | ------------------------------------------------------------------------------------------------- |
112
+ | `run` | Scan → Test → Validate → Blueprint; writes results and renderings |
113
+ | `retest --baseline <file>` | `run` plus comparison: verified fixes, reopened and new findings, regressions, trends |
114
+ | `scan` | Discovery only: which points of presence exist and what could be checked (no requests, no checks) |
115
+ | `init` | Writes an editable scan contract |
116
+ | `validate <file>…` | Schema validation; for results also referential integrity and recomputation of scores and verdict |
117
+ | `report`, `blueprint`, `dashboard` | Re-render from a results file |
118
+ | `controls`, `schema [name]` | The control catalog and the JSON Schemas |
119
+
120
+ Exit codes: `0` ok · `1` internal error · `2` usage · `3` input · `4` safety refusal · `5` invalid artifact ·
121
+ `6` `--fail-on` matched (for CI gating, for example `--fail-on NOT_READY`). Full reference: [docs/cli.md](docs/cli.md).
122
+
123
+ ## How it decides
124
+
125
+ - **Pillars** ([assessment model](docs/assessment-model.md)): Customer (can people use it and get value?),
126
+ Technology (is it built, tested and operated soundly?), Trust (secrets, access, isolation, privacy, AI boundaries).
127
+ - **Lifecycle tiers** CT-T0…CT-T6 ([lifecycle tiers](docs/lifecycle-tiers.md)), selected from your declared stage,
128
+ with carry-forward: a later tier always includes earlier tiers' controls.
129
+ - **Scoring and gates** ([scoring and gates](docs/scoring-and-gates.md)): pass = 1, partial = ½, fail = 0, weighted;
130
+ coverage and confidence shown beside every score; open P0/P1 cap the pillar; failed hard gates force `NOT_READY`;
131
+ unverified gates force `INCONCLUSIVE`.
132
+ - **Safety** ([safety and authorization](docs/safety-and-authorization.md)): what is never done, and what needs
133
+ explicit, scoped authorization.
134
+
135
+ ## Privacy and security
136
+
137
+ No telemetry, account, model call or child process. The repository is read, never executed; git-ignored files (such
138
+ as your local `.env`) are listed but never read. Evidence keeps short redacted excerpts, never file or response
139
+ contents; response headers are filtered to a security-relevant allowlist with cookie values removed. The dashboard is
140
+ a single file with a hash-pinned script and a `default-src 'none'` Content-Security-Policy. See
141
+ [SECURITY.md](SECURITY.md) and [docs/threat-model.md](docs/threat-model.md).
142
+
143
+ ## Documentation
144
+
145
+ [Philosophy](docs/philosophy.md) · [Architecture](docs/architecture.md) ·
146
+ [Assessment model](docs/assessment-model.md) · [Scoring and gates](docs/scoring-and-gates.md) ·
147
+ [Lifecycle tiers](docs/lifecycle-tiers.md) · [Safety and authorization](docs/safety-and-authorization.md) ·
148
+ [Interoperability](docs/interoperability.md) · [CLI](docs/cli.md) · [Threat model](docs/threat-model.md) ·
149
+ [Branding and attribution](docs/branding-and-attribution.md) · [Implementation status](IMPLEMENTATION_STATUS.md) ·
150
+ [Changelog](CHANGELOG.md) · [Contributing](CONTRIBUTING.md) · [Governance](GOVERNANCE.md)
151
+
152
+ ## License
153
+
154
+ MIT © EnWithAI Technologies. Not affiliated with or endorsed by any
155
+ platform or framework vendor named in this repository.
156
+
157
+ ---
158
+
159
+ <sub>**Check the spec. Check the impact. Check the outcome. Check the product.** Product Check is the fourth check, with
160
+ [Impact Check](https://github.com/enwithai/impact-check), [Spec Check](https://github.com/enwithai/spec-check) and
161
+ [Outcome Check](https://github.com/enwithai/outcome-check).</sub>
162
+
163
+ <sub>An **EnWithAI Engineering Commons** initiative. Developed and maintained by EnWithAI Technologies, contributing to
164
+ open, verifiable and accountable AI-assisted software engineering. Part of the broader [CrewPE](https://crewpe.ai)
165
+ engineering ecosystem. Product Check is independently usable and does not require CrewPE. Enterprise advisory and
166
+ transformation perspectives are supported through [NetworkGain Consulting](https://networkgain.com).
167
+ Attribution: [ATTRIBUTION.md](ATTRIBUTION.md) · Notices: [NOTICE.md](NOTICE.md) · Trademarks:
168
+ [TRADEMARKS.md](TRADEMARKS.md) · References: [REFERENCES.md](REFERENCES.md).</sub>
169
+
170
+ <sub>The design of Product Check's assessment model (separate Customer, Technology and Trust pillars, lifecycle tiers,
171
+ points of presence, evidence-before-opinion) was inspired by NetworkGain's CLEAR CT method. There is no structural
172
+ relationship — see [ATTRIBUTION.md](ATTRIBUTION.md#frameworks).</sub>
package/SECURITY.md ADDED
@@ -0,0 +1,27 @@
1
+ # Security policy
2
+
3
+ ## Supported versions
4
+
5
+ Pre-release. Once published, only the latest `0.x` alpha will receive fixes.
6
+
7
+ ## Reporting a vulnerability
8
+
9
+ Please **do not open a public issue**. Use GitHub's private vulnerability reporting (once the repository is public)
10
+ or write to [hello@enwithai.com](mailto:hello@enwithai.com). Include the Product Check version, the command and a
11
+ minimal **synthetic** reproduction. Never send real results, HAR files or repositories: they can contain secrets.
12
+
13
+ ## Security properties Product Check is designed to keep
14
+
15
+ - It never executes repository code, starts processes or uses `eval`/dynamic imports.
16
+ - It never reads git-ignored files, and stores only short redacted excerpts and checksums as evidence.
17
+ - It sends network requests only when explicitly authorized, only passive GETs to fixed paths on one origin, with no
18
+ cookies, credentials or bodies, a request budget and timeouts. It never follows redirects to other origins.
19
+ - It refuses prohibited actions (production writes, destructive tests, outreach, payments, active scanning,
20
+ credentialed access, personal-data extraction) whatever a contract says.
21
+ - It has no telemetry, account or model calls.
22
+ - Generated Markdown and HTML escape all untrusted text; the dashboard has a `default-src 'none'` CSP and one
23
+ hash-pinned inline script.
24
+ - A results file whose figures do not recompute is flagged and cannot be used as a baseline.
25
+
26
+ A violation of any of these is a security bug. See [docs/threat-model.md](docs/threat-model.md) and
27
+ [docs/safety-and-authorization.md](docs/safety-and-authorization.md).
package/TRADEMARKS.md ADDED
@@ -0,0 +1,23 @@
1
+ # Trademarks and names
2
+
3
+ The MIT License covers this repository's code and documentation. **It does not grant rights to use
4
+ the names below**, except as allowed by law (for example, to truthfully say that you use or modify Product Check).
5
+
6
+ None of these names is a registered trademark. EnWithAI Technologies uses its names together with the EnWithAI name
7
+ (for example "EnWithAI CrewPE"), and NetworkGain Consulting uses CLEAR together with the NetworkGain name.
8
+
9
+ | Name | Used by | Status |
10
+ | ------------------------------------------------ | ---------------------- | -------------------------------------------------------------------------------------------------------------- |
11
+ | EnWithAI ("Engineering with AI for Enterprises") | EnWithAI Technologies | company and brand name; not registered |
12
+ | CrewPE | EnWithAI Technologies | product name, used as "EnWithAI CrewPE"; not registered |
13
+ | TRACE | EnWithAI Technologies | framework name, used as "EnWithAI TRACE"; not registered |
14
+ | NetworkGain | NetworkGain Consulting | company and brand name; not registered |
15
+ | CLEAR, CLEAR CT | NetworkGain Consulting | framework name, used as "NetworkGain CLEAR"; not registered |
16
+ | Product Check | EnWithAI Technologies | descriptive project name, used as "EnWithAI Product Check"; not claimed as a trademark; name clearance pending |
17
+
18
+ **You may:** say your work uses, is based on or is compatible with Product Check; fork it; rename your fork.
19
+ **Please don't:** use these names to suggest endorsement, certification or affiliation by EnWithAI Technologies or
20
+ NetworkGain Consulting, or describe a Product Check result as a certification.
21
+
22
+ Other names (GitHub, Node.js, Next.js, Supabase, OpenAI, Stripe, …) belong to their owners and are used only to
23
+ identify those projects or formats.
@@ -0,0 +1,6 @@
1
+ # Dashboard assets
2
+
3
+ `dashboard.css` and `dashboard.js` are inlined into every generated `dashboard.html` by `src/dashboard/render.ts`.
4
+ All figures are rendered server-side from `product-check-results.json`; the script only adds tabs, table filters and
5
+ a theme toggle, and is allowed by a SHA-256 hash in the page's Content-Security-Policy. Generate a dashboard with
6
+ `product-check dashboard <results.json>` (also written by `run`).