Skip to content

feat: OSS first-run, CLI fail-on, honest install path - #27

Merged
daichunghy merged 8 commits into
mainfrom
feat/oss-readiness
Aug 22, 2026
Merged

feat: OSS first-run, CLI fail-on, honest install path#27
daichunghy merged 8 commits into
mainfrom
feat/oss-readiness

Conversation

@daichunghy

Copy link
Copy Markdown
Owner

What this is

OSS-readiness for PatchGate: a stranger can clone, build, init, preflight, and evaluate a fixture. Docs stop advertising npx patchgate (that npm name is a different project). Independent review findings from four angles are in docs/reviews/2026-08-22-multi-angle-*.md and the follow-up commit addresses the bugs.

Not claimed

No production, no v0.1, no external pilots, no npm publish. Package stays private: true.

Verify

  • npm run typecheck
  • npm test (99)
  • npm run build && npm run test:cli (5)
  • node scripts/check-application-dossier.mjs
  • node scripts/check-doc-links.mjs
  • node scripts/check-release-candidate.mjs

PatchGate Maintainers added 8 commits August 22, 2026 18:04
Keep schemaVersion pinned at 0.1, but stop treating evaluatorVersion as
the literal 0.1.0-dev const so a version bump no longer invalidates the
receipt contract. Rebuild the Action bundle so the compiled schema
matches source.
evaluate and github snapshot now share shouldFailAction with the Action.
Default blocked fails blocked, evidence_missing, and policy_ambiguous,
while human_review_required stays non-failing until the threshold is
raised. Invalid values exit 2 as FAIL_ON_INVALID. validate accepts
--base as an alias of --policy, and root help lists --json, --fail-on,
--report, and --output.
Keep the package private and unpublished. Document clone + npm ci +
build as the working first-run; npx from GitHub was tried against main
and failed because committed dist/ has the Action bundle only. Add a
files allowlist for a future maintainer publish, a short getting-started
walkthrough, and update the Codex form draft to the current
v0.1.0-beta.2 tag without claiming adoption or program selection.
When --base is not an existing file or directory and the current work
tree is a Git repository, preflight loads policy from Git objects the
same way --repo already did. Filesystem paths stay local-file mode.
doctor no longer treats a missing package.json as blocking for non-JS
repositories, and the init draft points at the example policy.
Consumer shadow quick start uses daichunghy/patchgate@v0.1.0-beta.2 with
fail-on never; npm ci plus uses ./ is labeled as developing PatchGate
itself. Dossier, evidence index and constitution matrix stop describing
open PR #9 or zero tags. AGENTS.md records origin/main at 6db56a4
without new gate or CI-run claims.
Keep application language honest: no adoption, no pilots, one-repo form.
P0 from this branch is listed separately from P1 maintainer-gated work.
Review follow-up: create missing init parents; fall through to
.github/patchgate.yml only when the root blob is absent; apply
--fail-on to rejected snapshots; stop advertising npx patchgate
(the npm name is a different project).
Write .github/patchgate.yml on request. A directory with a valid
policy and no Git repo can still be ready_for_local_preflight.
@daichunghy

Copy link
Copy Markdown
Owner Author

Maintainer merge follows this comment. CI is green. Branch protection still required an approving review that does not exist (solo maintainer). This merge is an administrator decision, not independent-review evidence for Codex for Open Source. G2 sessions and external shadow installs remain open.

@daichunghy
daichunghy merged commit b890347 into main Aug 22, 2026
10 checks passed
daichunghy pushed a commit that referenced this pull request Aug 22, 2026
Resolve squash #27 overlap. Keep commented init draft, contributor-health
docs, and receipt-schema constraint. CLI smoke still asserts version: 1 only.
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