humanish 0.0.1 → 0.15.1
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.
- package/AGENTS.md +77 -0
- package/CONTRIBUTING.md +39 -0
- package/LICENSE +21 -0
- package/README.md +437 -8
- package/SECURITY.md +34 -0
- package/dist/actor-contract.d.ts +107 -0
- package/dist/actor-contract.js +286 -0
- package/dist/actor-contract.js.map +1 -0
- package/dist/actor-registry.d.ts +73 -0
- package/dist/actor-registry.js +93 -0
- package/dist/actor-registry.js.map +1 -0
- package/dist/adapter-extension.d.ts +54 -0
- package/dist/adapter-extension.js +214 -0
- package/dist/adapter-extension.js.map +1 -0
- package/dist/argv.d.ts +1 -0
- package/dist/argv.js +8 -0
- package/dist/argv.js.map +1 -0
- package/dist/artifact-reference.d.ts +22 -0
- package/dist/artifact-reference.js +47 -0
- package/dist/artifact-reference.js.map +1 -0
- package/dist/browser-evidence-hygiene.d.ts +7 -0
- package/dist/browser-evidence-hygiene.js +40 -0
- package/dist/browser-evidence-hygiene.js.map +1 -0
- package/dist/claude-agent-sdk.d.ts +94 -0
- package/dist/claude-agent-sdk.js +363 -0
- package/dist/claude-agent-sdk.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +5 -0
- package/dist/cli.js.map +1 -0
- package/dist/codex-app-server-ui.d.ts +39 -0
- package/dist/codex-app-server-ui.js +357 -0
- package/dist/codex-app-server-ui.js.map +1 -0
- package/dist/codex-app-server.d.ts +144 -0
- package/dist/codex-app-server.js +754 -0
- package/dist/codex-app-server.js.map +1 -0
- package/dist/command-failure.d.ts +29 -0
- package/dist/command-failure.js +54 -0
- package/dist/command-failure.js.map +1 -0
- package/dist/computer-use-actor.d.ts +52 -0
- package/dist/computer-use-actor.js +48 -0
- package/dist/computer-use-actor.js.map +1 -0
- package/dist/computer-use.d.ts +232 -0
- package/dist/computer-use.js +615 -0
- package/dist/computer-use.js.map +1 -0
- package/dist/concurrency.d.ts +1 -0
- package/dist/concurrency.js +27 -0
- package/dist/concurrency.js.map +1 -0
- package/dist/concurrent-shared-world-lab.d.ts +115 -0
- package/dist/concurrent-shared-world-lab.js +1094 -0
- package/dist/concurrent-shared-world-lab.js.map +1 -0
- package/dist/core/git-state.d.ts +33 -0
- package/dist/core/git-state.js +277 -0
- package/dist/core/git-state.js.map +1 -0
- package/dist/core/git-workspace.d.ts +31 -0
- package/dist/core/git-workspace.js +447 -0
- package/dist/core/git-workspace.js.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.js +3 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/run-primitives.d.ts +66 -0
- package/dist/core/run-primitives.js +120 -0
- package/dist/core/run-primitives.js.map +1 -0
- package/dist/cua-actor-lab.d.ts +621 -0
- package/dist/cua-actor-lab.js +2845 -0
- package/dist/cua-actor-lab.js.map +1 -0
- package/dist/device-presets.d.ts +67 -0
- package/dist/device-presets.js +50 -0
- package/dist/device-presets.js.map +1 -0
- package/dist/e2b-desktop-executor.d.ts +101 -0
- package/dist/e2b-desktop-executor.js +309 -0
- package/dist/e2b-desktop-executor.js.map +1 -0
- package/dist/e2b-desktop-launch.d.ts +144 -0
- package/dist/e2b-desktop-launch.js +59 -0
- package/dist/e2b-desktop-launch.js.map +1 -0
- package/dist/e2b-detached.d.ts +53 -0
- package/dist/e2b-detached.js +130 -0
- package/dist/e2b-detached.js.map +1 -0
- package/dist/e2b-terminal-lab.d.ts +345 -0
- package/dist/e2b-terminal-lab.js +1532 -0
- package/dist/e2b-terminal-lab.js.map +1 -0
- package/dist/env-file.d.ts +14 -0
- package/dist/env-file.js +108 -0
- package/dist/env-file.js.map +1 -0
- package/dist/feedback.d.ts +51 -0
- package/dist/feedback.js +351 -0
- package/dist/feedback.js.map +1 -0
- package/dist/image-evidence.d.ts +2 -0
- package/dist/image-evidence.js +33 -0
- package/dist/image-evidence.js.map +1 -0
- package/dist/index.d.ts +63 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/init-templates.d.ts +12 -0
- package/dist/init-templates.js +369 -0
- package/dist/init-templates.js.map +1 -0
- package/dist/init.d.ts +26 -0
- package/dist/init.js +429 -0
- package/dist/init.js.map +1 -0
- package/dist/lab-app-runner.d.ts +78 -0
- package/dist/lab-app-runner.js +403 -0
- package/dist/lab-app-runner.js.map +1 -0
- package/dist/lab-config.d.ts +583 -0
- package/dist/lab-config.js +1789 -0
- package/dist/lab-config.js.map +1 -0
- package/dist/lab-engine.d.ts +77 -0
- package/dist/lab-engine.js +216 -0
- package/dist/lab-engine.js.map +1 -0
- package/dist/lab-preflight.d.ts +67 -0
- package/dist/lab-preflight.js +385 -0
- package/dist/lab-preflight.js.map +1 -0
- package/dist/labs.d.ts +53 -0
- package/dist/labs.js +382 -0
- package/dist/labs.js.map +1 -0
- package/dist/observer-assets.d.ts +2 -0
- package/dist/observer-assets.js +2630 -0
- package/dist/observer-assets.js.map +1 -0
- package/dist/observer-data.d.ts +63 -0
- package/dist/observer-data.js +145 -0
- package/dist/observer-data.js.map +1 -0
- package/dist/observer-static.d.ts +39 -0
- package/dist/observer-static.js +306 -0
- package/dist/observer-static.js.map +1 -0
- package/dist/observer.d.ts +46 -0
- package/dist/observer.js +550 -0
- package/dist/observer.js.map +1 -0
- package/dist/openai-responses-cu.d.ts +113 -0
- package/dist/openai-responses-cu.js +545 -0
- package/dist/openai-responses-cu.js.map +1 -0
- package/dist/oss-lab.d.ts +52 -0
- package/dist/oss-lab.js +344 -0
- package/dist/oss-lab.js.map +1 -0
- package/dist/oss-meta-lab-scoring.d.ts +15 -0
- package/dist/oss-meta-lab-scoring.js +145 -0
- package/dist/oss-meta-lab-scoring.js.map +1 -0
- package/dist/oss-meta-lab.d.ts +277 -0
- package/dist/oss-meta-lab.js +4529 -0
- package/dist/oss-meta-lab.js.map +1 -0
- package/dist/oss-remote-telemetry.d.ts +77 -0
- package/dist/oss-remote-telemetry.js +403 -0
- package/dist/oss-remote-telemetry.js.map +1 -0
- package/dist/persona.d.ts +35 -0
- package/dist/persona.js +133 -0
- package/dist/persona.js.map +1 -0
- package/dist/pi-agent-core.d.ts +77 -0
- package/dist/pi-agent-core.js +203 -0
- package/dist/pi-agent-core.js.map +1 -0
- package/dist/program.d.ts +54 -0
- package/dist/program.js +2349 -0
- package/dist/program.js.map +1 -0
- package/dist/redaction.d.ts +90 -0
- package/dist/redaction.js +292 -0
- package/dist/redaction.js.map +1 -0
- package/dist/run-paths.d.ts +56 -0
- package/dist/run-paths.js +340 -0
- package/dist/run-paths.js.map +1 -0
- package/dist/run.d.ts +794 -0
- package/dist/run.js +4844 -0
- package/dist/run.js.map +1 -0
- package/dist/scripted-browser-actor.d.ts +297 -0
- package/dist/scripted-browser-actor.js +1399 -0
- package/dist/scripted-browser-actor.js.map +1 -0
- package/dist/scripted-browser-lab.d.ts +107 -0
- package/dist/scripted-browser-lab.js +788 -0
- package/dist/scripted-browser-lab.js.map +1 -0
- package/dist/selected-output-paths.d.ts +49 -0
- package/dist/selected-output-paths.js +354 -0
- package/dist/selected-output-paths.js.map +1 -0
- package/dist/shared-world-lab.d.ts +208 -0
- package/dist/shared-world-lab.js +1049 -0
- package/dist/shared-world-lab.js.map +1 -0
- package/dist/source-archive.d.ts +82 -0
- package/dist/source-archive.js +408 -0
- package/dist/source-archive.js.map +1 -0
- package/dist/stop-conditions.d.ts +26 -0
- package/dist/stop-conditions.js +66 -0
- package/dist/stop-conditions.js.map +1 -0
- package/dist/terminal-agent-actor.d.ts +36 -0
- package/dist/terminal-agent-actor.js +23 -0
- package/dist/terminal-agent-actor.js.map +1 -0
- package/docs/architecture/actor-contract.md +431 -0
- package/docs/architecture/github-feedback-loop.md +189 -0
- package/docs/architecture/local-codex-tui-actor.md +213 -0
- package/docs/architecture/observer.md +118 -0
- package/docs/architecture/oss-lab-poc.md +250 -0
- package/docs/architecture/project-layout.md +166 -0
- package/docs/architecture/state-driven-executor.md +203 -0
- package/docs/architecture/terminal-product-lane.md +148 -0
- package/docs/contracts/adapter-fixtures.md +80 -0
- package/docs/contracts/core.md +71 -0
- package/docs/contracts/feedback.md +145 -0
- package/docs/contracts/policy.md +311 -0
- package/docs/contracts/run-bundle.md +358 -0
- package/docs/contracts/schemas.md +984 -0
- package/docs/goals/current.md +428 -0
- package/docs/principles/invariants-and-defaults.md +135 -0
- package/docs/principles/self-driving-harness.md +129 -0
- package/docs/product/open-source-install-experience.md +237 -0
- package/docs/ramp/README.md +207 -0
- package/docs/release/open-source-readiness.md +208 -0
- package/docs/release/public-readiness-standard.md +205 -0
- package/docs/roadmap/world-class-open-source-v0.md +311 -0
- package/package.json +102 -8
- package/skills/humanish/SKILL.md +244 -0
- package/skills/humanish/agents/openai.yaml +7 -0
- package/index.js +0 -1
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
# Open-Source Release Readiness
|
|
2
|
+
|
|
3
|
+
Date: 2026-06-02
|
|
4
|
+
|
|
5
|
+
Status: HISTORICAL (banner added 2026-06-11). This audit declared the repo a
|
|
6
|
+
public repository candidate after reviewed history cleanup; the repository
|
|
7
|
+
has since gone public and the package has shipped releases past the `0.1.3`
|
|
8
|
+
named below, so treat versions and one-time audit details here as a snapshot. The release gates and publish procedure remain the working
|
|
9
|
+
reference. For the live goal state read
|
|
10
|
+
[`docs/goals/current.md`](../goals/current.md). Actual
|
|
11
|
+
`npm publish` remains a human release action and must not be run by an agent
|
|
12
|
+
without explicit approval in the current context.
|
|
13
|
+
|
|
14
|
+
Use [`docs/release/public-readiness-standard.md`](public-readiness-standard.md)
|
|
15
|
+
as the public-cleanliness policy. The standard distinguishes real blockers such
|
|
16
|
+
as secrets, PHI, private source, private screenshots, and raw credentials from
|
|
17
|
+
acceptable public metadata such as maintainer-approved public commit email.
|
|
18
|
+
|
|
19
|
+
## Package State
|
|
20
|
+
|
|
21
|
+
- Package name: `humanish`
|
|
22
|
+
- Version: `0.1.3`
|
|
23
|
+
- Binary: `humanish`
|
|
24
|
+
- License: MIT
|
|
25
|
+
- Repository: `https://github.com/danielgwilson/humanish`
|
|
26
|
+
- npm access: public via `publishConfig.access`
|
|
27
|
+
- npm contents: compiled `dist`, public docs directories, including ramp and
|
|
28
|
+
current-goal docs, `skills/`,
|
|
29
|
+
`README.md`, `LICENSE`, `SECURITY.md`, `CONTRIBUTING.md`, and
|
|
30
|
+
`package.json`
|
|
31
|
+
- GitHub Actions publish workflow: `.github/workflows/publish.yml`
|
|
32
|
+
- optional live E2B peer: `@e2b/desktop`
|
|
33
|
+
|
|
34
|
+
`prepack` runs the TypeScript build so a clean checkout can produce a usable
|
|
35
|
+
tarball with `npm pack` or `npm publish`.
|
|
36
|
+
|
|
37
|
+
## Skill State
|
|
38
|
+
|
|
39
|
+
The installable agent skill lives at:
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
skills/humanish/SKILL.md
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
This matches skills.sh discovery for `skills/<name>/SKILL.md`. The required
|
|
46
|
+
frontmatter fields are present:
|
|
47
|
+
|
|
48
|
+
```yaml
|
|
49
|
+
name: humanish
|
|
50
|
+
description: ...
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Verification command:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
DISABLE_TELEMETRY=1 npx skills add . --list
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Expected install command after the repository is public:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
npx skills add danielgwilson/humanish --skill humanish
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Public Boundary
|
|
66
|
+
|
|
67
|
+
Release work must not include PII, PHI, secrets, keys, tokens, raw private
|
|
68
|
+
transcripts, private screenshots, raw customer data, raw patient data, private
|
|
69
|
+
source snippets, or generated run bundles.
|
|
70
|
+
|
|
71
|
+
Allowed examples are synthetic or redacted only.
|
|
72
|
+
|
|
73
|
+
## GitHub Visibility Gate
|
|
74
|
+
|
|
75
|
+
The current tree and reachable Git history are the public surface being
|
|
76
|
+
hardened here. The repository must not be made public until these checks pass
|
|
77
|
+
from a fresh clone:
|
|
78
|
+
|
|
79
|
+
- only the intended `main` branch is reachable;
|
|
80
|
+
- no stale release tags point at pre-cleanup source;
|
|
81
|
+
- history scans have no private upstream system names, absolute maintainer paths,
|
|
82
|
+
secret patterns, or generated runtime bundles;
|
|
83
|
+
- reachable commit author and committer emails are GitHub noreply-style
|
|
84
|
+
addresses or explicitly approved public maintainer emails;
|
|
85
|
+
- GitHub issues, PRs, labels, and project fields have been scanned or rewritten
|
|
86
|
+
for public-safe language.
|
|
87
|
+
|
|
88
|
+
GitHub may still retain unreachable object caches or historical Actions logs
|
|
89
|
+
internally. Treat those as residual platform-cache risk and delete old workflow
|
|
90
|
+
runs before public launch if a stricter surface is required.
|
|
91
|
+
|
|
92
|
+
History-check shape used during this audit:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
git rev-list --all | xargs -n 32 git grep -n -I -i -e '<private-source-name>' -e '<absolute-local-path-marker>' -e '<workspace-path-marker>'
|
|
96
|
+
git rev-list --all | xargs -n 32 git grep -n -I -E 'sk-[A-Za-z0-9_-]{20,}|gh[pousr]_[A-Za-z0-9_]{20,}|github_pat_[A-Za-z0-9_]{20,}|AKIA[0-9A-Z]{16}|BEGIN [A-Z ]*PRIVATE KEY|AIza[0-9A-Za-z_-]{20,}|xox[baprs]-[A-Za-z0-9-]{20,}'
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Required Gates
|
|
100
|
+
|
|
101
|
+
Run these before any public release candidate:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
pnpm install --frozen-lockfile
|
|
105
|
+
pnpm check
|
|
106
|
+
pnpm public-surface:scan
|
|
107
|
+
pnpm skill:check
|
|
108
|
+
pnpm pack:dry-run
|
|
109
|
+
git diff --check
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
`pnpm public-surface:scan` scans tracked files plus the npm dry-run payload,
|
|
113
|
+
including built `dist/` output. It fails on common secret tokens, absolute local
|
|
114
|
+
user paths, local workspace paths, unapproved durable commit email metadata,
|
|
115
|
+
known private upstream system names, and binary public assets that are not
|
|
116
|
+
explicitly allowlisted by SHA-256.
|
|
117
|
+
|
|
118
|
+
## Tarball Inspection
|
|
119
|
+
|
|
120
|
+
Use:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
pnpm pack:dry-run
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
`pnpm pack:dry-run` delegates to `npm pack --dry-run` after `prepack` builds
|
|
127
|
+
`dist`.
|
|
128
|
+
|
|
129
|
+
The tarball must not include `.env*`, `.humanish/`, generated run bundles,
|
|
130
|
+
private screenshots, raw transcripts, `.npmrc`, tests, fixtures, internal
|
|
131
|
+
operations notes, local runtime caches, or private operator packets. Public
|
|
132
|
+
`docs/ramp/`, `docs/goals/`, and repo-local `AGENTS.md` files are allowed when
|
|
133
|
+
they are synthetic, durable, and public-safe. Public image assets must remain on
|
|
134
|
+
the scanner allowlist and keep their approved checksum.
|
|
135
|
+
|
|
136
|
+
## Publish Procedure
|
|
137
|
+
|
|
138
|
+
Only after maintainer approval. Prefer the tag-gated GitHub Actions workflow
|
|
139
|
+
over local publication:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
pnpm release:check
|
|
143
|
+
npm version patch --no-git-tag-version
|
|
144
|
+
# Open and merge the release PR.
|
|
145
|
+
git fetch origin main --tags
|
|
146
|
+
git switch main
|
|
147
|
+
git pull --ff-only origin main
|
|
148
|
+
VERSION="$(node -p "require('./package.json').version")"
|
|
149
|
+
git tag "v${VERSION}"
|
|
150
|
+
git push origin "v${VERSION}"
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
No agent should run `npm publish` locally without explicit human approval in the
|
|
154
|
+
current thread. That approval must come from the maintainer responsible for the
|
|
155
|
+
release.
|
|
156
|
+
|
|
157
|
+
The release tag must point at a commit already reachable from `origin/main`.
|
|
158
|
+
Tagging a local release commit before the release PR merges can publish a
|
|
159
|
+
correct package from a commit that is not in main history. The publish workflow
|
|
160
|
+
therefore fails closed unless the tag commit is an ancestor of `origin/main` and
|
|
161
|
+
the tag name exactly matches `package.json`'s version.
|
|
162
|
+
|
|
163
|
+
## Trusted Publishing Setup
|
|
164
|
+
|
|
165
|
+
The npm package page exists. For the first tag after a repository rename, the
|
|
166
|
+
order is load-bearing (the OIDC binding is exact owner/repo + workflow path):
|
|
167
|
+
|
|
168
|
+
1. Rename the GitHub repository first.
|
|
169
|
+
2. Configure/point the npm Trusted Publisher at the NEW repository name.
|
|
170
|
+
3. Merge the release commit, then tag.
|
|
171
|
+
|
|
172
|
+
A tag pushed before steps 1-2 fails auth (OIDC repository claim mismatch) or
|
|
173
|
+
provenance validation (package.json repository.url vs actual workflow repo).
|
|
174
|
+
|
|
175
|
+
Trusted Publishing should be configured for GitHub Actions before cutting the
|
|
176
|
+
next tag:
|
|
177
|
+
|
|
178
|
+
- provider: GitHub Actions
|
|
179
|
+
- repository owner: `danielgwilson`
|
|
180
|
+
- repository name: `humanish`
|
|
181
|
+
- workflow filename: `publish.yml`
|
|
182
|
+
- environment: blank
|
|
183
|
+
- registry: npm public registry
|
|
184
|
+
|
|
185
|
+
The workflow uses:
|
|
186
|
+
|
|
187
|
+
- `permissions.id-token: write` for OIDC;
|
|
188
|
+
- `permissions.contents: read`;
|
|
189
|
+
- `actions/checkout@v6`;
|
|
190
|
+
- `actions/setup-node@v6` with Node 24 and npm registry URL;
|
|
191
|
+
- `npm publish --access public`;
|
|
192
|
+
- no long-lived npm token secret.
|
|
193
|
+
|
|
194
|
+
Future automated release flow after trusted publishing is configured:
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
pnpm release:check
|
|
198
|
+
npm version patch --no-git-tag-version
|
|
199
|
+
# Open and merge the release PR, then tag the pulled main commit.
|
|
200
|
+
git fetch origin main --tags
|
|
201
|
+
git switch main
|
|
202
|
+
git pull --ff-only origin main
|
|
203
|
+
VERSION="$(node -p "require('./package.json').version")"
|
|
204
|
+
git tag "v${VERSION}"
|
|
205
|
+
git push origin "v${VERSION}"
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
The publish job is tag-gated and only publishes when running on a `v*` tag.
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# Public Readiness Standard
|
|
2
|
+
|
|
3
|
+
Status: researched working standard for public repository and npm release hygiene.
|
|
4
|
+
|
|
5
|
+
This document separates real public-release risk from preference cleanup. The
|
|
6
|
+
goal is to keep `humanish` safe, useful, and professional without deleting the
|
|
7
|
+
durable context future contributors and agents need.
|
|
8
|
+
|
|
9
|
+
## Sources Reviewed
|
|
10
|
+
|
|
11
|
+
- [GitHub Docs: Removing sensitive data from a repository](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository)
|
|
12
|
+
- [GitHub Docs: Setting your commit email address](https://docs.github.com/en/account-and-profile/how-tos/email-preferences/setting-your-commit-email-address)
|
|
13
|
+
- [GitHub Docs: About secret scanning](https://docs.github.com/code-security/secret-scanning/about-secret-scanning)
|
|
14
|
+
- [GitHub Docs: About push protection](https://docs.github.com/en/code-security/concepts/secret-security/about-push-protection)
|
|
15
|
+
- [npm Docs: package.json files field](https://docs.npmjs.com/cli/v11/configuring-npm/package-json/#files)
|
|
16
|
+
- [npm Docs: npm publish package contents](https://docs.npmjs.com/cli/v9/commands/npm-publish#files-included-in-package)
|
|
17
|
+
- [npm Docs: Trusted publishing for npm packages](https://docs.npmjs.com/trusted-publishers/)
|
|
18
|
+
- [OpenSSF Scorecard](https://scorecard.dev/)
|
|
19
|
+
- [OpenSSF Source Code Management Platform Configuration Best Practices](https://best.openssf.org/SCM-BestPractices/)
|
|
20
|
+
- [OWASP Secrets Management Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Secrets_Management_Cheat_Sheet.html)
|
|
21
|
+
|
|
22
|
+
## Decision Model
|
|
23
|
+
|
|
24
|
+
Use four categories.
|
|
25
|
+
|
|
26
|
+
### 1. Public Blockers
|
|
27
|
+
|
|
28
|
+
These must be removed from the current tree, package payload, generated docs,
|
|
29
|
+
screenshots, logs, and reachable history before the repo is public.
|
|
30
|
+
|
|
31
|
+
- Secrets: API keys, provider tokens, npm/GitHub tokens, private keys, cookies,
|
|
32
|
+
session URLs, database URLs with credentials, `.env` values, auth-bearing
|
|
33
|
+
request headers, and raw credential material.
|
|
34
|
+
- PHI, patient data, customer data, private user identifiers, private emails,
|
|
35
|
+
phone numbers, addresses, account IDs, billing IDs, raw transcripts, and raw
|
|
36
|
+
screenshots from private systems.
|
|
37
|
+
- Private source snippets, internal-only product names, private roadmaps,
|
|
38
|
+
incident details, or operational data that would expose a non-public system or
|
|
39
|
+
customer relationship.
|
|
40
|
+
- Built package output, source maps, docs, fixtures, or image assets that contain
|
|
41
|
+
any of the above.
|
|
42
|
+
|
|
43
|
+
If a real secret was exposed, revoke or rotate it first. GitHub explicitly warns
|
|
44
|
+
that history rewriting has side effects and may not be warranted once the secret
|
|
45
|
+
is revoked. Rewrite history only when sensitive data remains materially risky
|
|
46
|
+
after revocation, or when privacy, legal, contractual, or proprietary-source
|
|
47
|
+
obligations require removal.
|
|
48
|
+
|
|
49
|
+
### 2. Release-Gate Hygiene
|
|
50
|
+
|
|
51
|
+
These should fail CI or release checks until fixed, but they are not all reasons
|
|
52
|
+
to rewrite history.
|
|
53
|
+
|
|
54
|
+
- Package payload is not inspected with `npm pack --dry-run`.
|
|
55
|
+
- Scanner only checks tracked source and misses built `dist`, source maps, docs
|
|
56
|
+
packaged by `files`, or generated assets.
|
|
57
|
+
- Binary public assets are not approved by path and checksum.
|
|
58
|
+
- Docs link to files that are not shipped or not reachable from the public repo.
|
|
59
|
+
- Runtime artifacts are included: `.humanish/`, run bundles, transcripts,
|
|
60
|
+
disposable clones, `.firecrawl/`, `.e2b/`, logs, tarballs, caches.
|
|
61
|
+
- GitHub Actions use broad default permissions where read-only is enough.
|
|
62
|
+
- Publish workflow uses long-lived npm tokens when OIDC trusted publishing is
|
|
63
|
+
available.
|
|
64
|
+
- Secret scanning, push protection, or equivalent local scanners are absent from
|
|
65
|
+
the operating checklist.
|
|
66
|
+
|
|
67
|
+
### 3. Acceptable Public Metadata
|
|
68
|
+
|
|
69
|
+
These are acceptable when intentional and public-safe. They should not trigger
|
|
70
|
+
panic cleanup or history rewrite by default.
|
|
71
|
+
|
|
72
|
+
- Maintainer name, GitHub username, public repo owner, public issue links, and
|
|
73
|
+
public repository URLs.
|
|
74
|
+
- A maintainer-approved public commit email. GitHub allows either a noreply
|
|
75
|
+
address or any configured email for commits. Noreply is a privacy preference,
|
|
76
|
+
not a universal public-release requirement.
|
|
77
|
+
- Env var names without values, such as `OPENAI_API_KEY` or `E2B_API_KEY`.
|
|
78
|
+
- Synthetic personas, synthetic screenshots, synthetic app data, and redacted
|
|
79
|
+
proof examples.
|
|
80
|
+
- Public-safe ramp, goal, architecture, and roadmap docs that help future
|
|
81
|
+
contributors continue the project.
|
|
82
|
+
|
|
83
|
+
### 4. Professionalism Cleanup
|
|
84
|
+
|
|
85
|
+
These do not usually justify history rewrite, but they matter for an open-source
|
|
86
|
+
repo people will judge quickly.
|
|
87
|
+
|
|
88
|
+
- Chat residue, private-process phrasing, or emotional notes that do not help a
|
|
89
|
+
public maintainer.
|
|
90
|
+
- Overly specific local machine paths or private workspace names, even when not
|
|
91
|
+
security-sensitive.
|
|
92
|
+
- Broken links, stale commands, claims of product proof where only contract proof
|
|
93
|
+
exists, and docs that depend on private chat memory.
|
|
94
|
+
- Screenshots that are technically synthetic but look sloppy, confusing, or
|
|
95
|
+
embarrassing.
|
|
96
|
+
|
|
97
|
+
Professionalism cleanup should preserve useful context. Deleting all ramp or
|
|
98
|
+
goal docs is worse than rewriting them into a public-safe form.
|
|
99
|
+
|
|
100
|
+
## Commit Email Policy
|
|
101
|
+
|
|
102
|
+
Noreply commit emails are preferred for privacy and consistency.
|
|
103
|
+
|
|
104
|
+
Allowed commit metadata:
|
|
105
|
+
|
|
106
|
+
- GitHub noreply addresses.
|
|
107
|
+
- `noreply@github.com` for GitHub-generated commits.
|
|
108
|
+
- Explicitly approved public maintainer emails.
|
|
109
|
+
|
|
110
|
+
Blocked commit metadata:
|
|
111
|
+
|
|
112
|
+
- Unknown personal emails.
|
|
113
|
+
- Contractor, employee, patient, customer, vendor, or private-domain emails that
|
|
114
|
+
are not intentionally public for this project.
|
|
115
|
+
- Any email that appears in logs, transcripts, screenshots, or docs as private
|
|
116
|
+
user/customer data rather than maintainer metadata.
|
|
117
|
+
|
|
118
|
+
Do not force-rewrite `main` solely because a known maintainer-approved public
|
|
119
|
+
email appears in a commit. Document the approval and update the scanner
|
|
120
|
+
allowlist instead.
|
|
121
|
+
|
|
122
|
+
## NPM Package Surface
|
|
123
|
+
|
|
124
|
+
The npm package is its own public surface. The release gate must inspect:
|
|
125
|
+
|
|
126
|
+
- `npm pack --dry-run --json` output;
|
|
127
|
+
- compiled `dist`;
|
|
128
|
+
- source maps;
|
|
129
|
+
- all files matched by `package.json.files`;
|
|
130
|
+
- always-included files such as `package.json`, `README.md`, and `LICENSE`;
|
|
131
|
+
- docs, skills, screenshots, and other assets shipped for npm-page display.
|
|
132
|
+
|
|
133
|
+
The package should use the `files` field as an allowlist, but that is not enough.
|
|
134
|
+
The scanner must union tracked source files with the actual npm dry-run payload.
|
|
135
|
+
|
|
136
|
+
Public binary assets are allowed only when:
|
|
137
|
+
|
|
138
|
+
- the asset is intentionally public;
|
|
139
|
+
- the asset is synthetic or redacted;
|
|
140
|
+
- the path is allowlisted;
|
|
141
|
+
- the SHA-256 checksum is pinned in the scanner.
|
|
142
|
+
|
|
143
|
+
## GitHub And Supply Chain Posture
|
|
144
|
+
|
|
145
|
+
Minimum public-repo posture:
|
|
146
|
+
|
|
147
|
+
- branch protection or rulesets for `main`;
|
|
148
|
+
- required CI before merge;
|
|
149
|
+
- workflow permissions narrowed to read-only unless a job needs more;
|
|
150
|
+
- no long-lived npm token in Actions for publish;
|
|
151
|
+
- npm trusted publishing via OIDC where possible;
|
|
152
|
+
- secret scanning and push protection enabled where available;
|
|
153
|
+
- `SECURITY.md`, `CONTRIBUTING.md`, `LICENSE`, and clear issue flow;
|
|
154
|
+
- periodic OpenSSF Scorecard or equivalent review.
|
|
155
|
+
|
|
156
|
+
Nice-to-have after public launch:
|
|
157
|
+
|
|
158
|
+
- dependency update automation;
|
|
159
|
+
- CodeQL or comparable SAST;
|
|
160
|
+
- release provenance and staged publishing where practical;
|
|
161
|
+
- signed releases when the release process matures.
|
|
162
|
+
|
|
163
|
+
## Humanish Application
|
|
164
|
+
|
|
165
|
+
For `humanish`, the honest standard is:
|
|
166
|
+
|
|
167
|
+
- Keep `docs/ramp/` and `docs/goals/` if they are public-safe. They are essential
|
|
168
|
+
project memory for future coding agents and contributors.
|
|
169
|
+
- Keep the package docs and skill docs focused on public install, public-safe
|
|
170
|
+
examples, and synthetic proof.
|
|
171
|
+
- Do not commit `.humanish/`, `.firecrawl/`, screenshots from private systems,
|
|
172
|
+
raw run bundles, private transcripts, local env files, or packed tarballs.
|
|
173
|
+
- Treat `dist` and source maps as public and scan them.
|
|
174
|
+
- Treat the README screenshot as public and checksum-gated.
|
|
175
|
+
- Allow a maintainer-approved public email in commit metadata; do not classify it
|
|
176
|
+
as a secret.
|
|
177
|
+
- Rewrite history only for actual sensitive data, private source, or private
|
|
178
|
+
identity/customer data that remains materially risky.
|
|
179
|
+
|
|
180
|
+
## Practical Checklist
|
|
181
|
+
|
|
182
|
+
Before making the repository public or cutting a public package:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
pnpm install --frozen-lockfile
|
|
186
|
+
pnpm release:check
|
|
187
|
+
git diff --check
|
|
188
|
+
npm pack --dry-run --json
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Also verify in GitHub:
|
|
192
|
+
|
|
193
|
+
- `main` branch protection/ruleset is active;
|
|
194
|
+
- secret scanning and push protection are enabled where available;
|
|
195
|
+
- publish workflow uses OIDC trusted publishing;
|
|
196
|
+
- failed workflow logs do not contain real secrets or private data;
|
|
197
|
+
- visible issues, PRs, labels, and project metadata do not expose private context.
|
|
198
|
+
|
|
199
|
+
If a check fails, classify it before reacting:
|
|
200
|
+
|
|
201
|
+
1. Secret/PHI/private source? Rotate/revoke first, then consider history rewrite.
|
|
202
|
+
2. Package leak or private artifact? Remove from package/tree and rerun gates.
|
|
203
|
+
3. Unknown private identity metadata? Approve, redact, or rewrite based on risk.
|
|
204
|
+
4. Public maintainer metadata? Usually allowlist and document.
|
|
205
|
+
5. Sloppy public docs? Rewrite, do not delete useful project memory.
|