Skip to content

docs: make README product-first and integration-friendly - #530

Merged
seonghobae merged 26 commits into
mainfrom
docs/readme-product-refresh-20260901
Sep 1, 2026
Merged

docs: make README product-first and integration-friendly#530
seonghobae merged 26 commits into
mainfrom
docs/readme-product-refresh-20260901

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Summary

Reframe Noema's repository landing page around its code-current product responsibility as an evidence-producing credential and maintenance control plane, and make the repository's owner-selected commercial source license explicit.

  • lead with buyer/operator value instead of internal leaf/hub terminology;
  • explain credential exchange, review/maintenance controls, and the contextual-orchestrator boundary in product language;
  • provide task-oriented local run, Worker secret, deploy, smoke-check, and exchange examples;
  • add architecture, GitHub App permission, security, verification, and documentation navigation;
  • retain the scheduled product-maintenance workflow as a low-level documentation-map entry point without moving internal operating procedure back into customer copy;
  • add a root Apache License 2.0 source grant and matching README statement;
  • keep source licensing separate from npm package publication, third-party dependency, NOTICE, contributor/IP, release, deployment, customer, revenue, legal, and transfer evidence;
  • align the executable acquisition licensing gate with that source-vs-package distribution boundary;
  • require HTTPS for non-loopback exchange endpoints.

Licensing due diligence

Protected main had no root LICENSE, but absence of a license file was not treated as a reason to stop. Repository provenance and the owner's commercial-use policy support an Apache-2.0 source grant: Noema is an organization-owned non-fork repository and no inherited outbound source license was found that must be preserved instead.

The npm package remains explicitly private and is not the product distribution channel. The source grant therefore lives at root LICENSE plus the README without inventing npm publication metadata. Any distributable package still requires exact manifest/evidence license metadata alignment.

Third-party tooling is not conflated with Noema source. Current lockfile evidence contains LGPL-3.0-or-later optional development/build packages on the wrangler → miniflare → sharp → @img/sharp-libvips-* path. Repository runtime-image tests exclude Wrangler/Miniflare from the patch-validator image, so this is not evidence that LGPL code is bundled into that runtime. It remains an inbound-tooling policy defect under ContextualWisdomLab's no-GPL-family default; issue #531 owns removal/replacement and is not waived by this source-license PR.

Exact-head repair lineage

README/documentation contract failures found by hosted CI were repaired on this same branch rather than deferred:

  1. scheduled hourly-product-development discoverability is retained only as a documentation-map entry while internal procedure stays in contributor/internal docs;
  2. the licensing document preserves the protected-current statement that the exact-release artifact_rights_metadata acquisition-integrity boundary is already integrated on protected main;
  3. after protected main advanced through runner repair fix(ci): pin required GitHub-hosted runner selectors #532, the branch was non-destructively fast-forwarded to GitHub's inspected three-way merge object so the current base is an ancestor and no predecessor evidence was reused.

Current exact authority

  • live protected base: main@b505cb807536e9cf2bdbfcb05ad3fefe99999a14;
  • exact head: c5e3635fa69556a74d3d0ba8601bf5d57f71e515;
  • lifecycle: open / Ready / mechanically mergeable at the latest fresh read;
  • exact-head reviewer-ci, ci, and Security Scan are terminal success; patch-validator-image is still in progress and therefore non-passing until terminal;
  • predecessor check/review evidence is not transferable;
  • protected main remains without this Apache-2.0 grant until this exact head integrates;
  • issue license: remove GPL-family build tooling path #531 remains a separate GPL-family development/build-tooling policy gap.

Evidence used

Checked against protected main and current canonical repository docs/code:

  • docs/PRD.md for product responsibility, users/jobs, product principles, authority separation, and work-conserving behavior;
  • package.json / package-lock.json for runtime/toolchain metadata and third-party license provenance;
  • docs/LICENSING_AND_IP_TRANSFER.md and acquisition rights tests for source/dependency/package/transfer authority separation;
  • scripts/acquisition-readiness-audit.mjs for the executable source-vs-package licensing gate;
  • patch-validator image contract tests for Wrangler/Miniflare runtime exclusion;
  • openapi.json, deployment scripts, and API documentation for /health, /ready, /exchange, and the HTTPS transport boundary;
  • root ARCHITECTURE.md as the canonical architecture/trust-boundary document.

Scope

README, root source-license grant, README/documentation contract repair, licensing/product-gap documentation, and the acquisition licensing evidence boundary. No GitHub App permission, npm publication channel, release, deployment, security threshold, or transfer authority is weakened. Merge only through the normal protected path after fresh unchanged-head checks/reviews/base/mergeability satisfy live governance.

@coderabbitai

coderabbitai Bot commented Sep 1, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Apache License 2.0을 추가하고 package.json에 라이선스를 등록했습니다. README.md는 Noema의 제품 범위, 배포 절차, 보안 모델, 검증 범위 및 기여 절차를 설명하도록 재작성했습니다.

Changes

문서 및 라이선스 갱신

Layer / File(s) Summary
Apache License 2.0 추가
LICENSE, package.json
Apache License 2.0 전문을 추가하고 package manifest에 Apache-2.0 라이선스를 등록했습니다.
README 제품 범위 재정의
README.md
Noema를 GitHub Actions OIDC와 repository-scoped GitHub App capability를 사용하는 credential·maintenance control plane으로 설명하도록 제품 범위를 변경했습니다.
배포 및 보안 모델 문서화
README.md
Worker 배포, exchange 설정, gateway 정책, OIDC 신뢰 조건, replay 경계 및 GitHub App 권한 모델을 문서화했습니다.
검증 및 기여 문서 정리
README.md
검증 명령, release:verify의 증거 범위, 문서 지도, 기여 절차 및 라이선스 원칙을 추가했습니다.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: 🔵 Low · up to 25630

The README now documents deployment and credential exchange, but does not explicitly require HTTPS for non-local exchange endpoints, which could lead to an insecure transport configuration. Runtime protections remain unchanged, so the PR is mergeable with owner awareness and a documentation follow-up.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목은 README를 제품 중심 및 통합 친화적으로 개편한 주요 변경 사항을 정확하게 요약합니다. README 재작성과 직접 관련된 제목입니다.
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (3 skipped: 3 unsupported.)

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/readme-product-refresh-20260901

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

coderabbitai[bot]

This comment was marked as resolved.

@seonghobae seonghobae added the enhancement New feature or request label Sep 1, 2026 — with ChatGPT Codex Connector
* test(ci): expose floating runner selector starvation

* fix(ci): pin reviewer runner image

* fix(ci): pin verification runner image

* fix(ci): pin image gate runner image

* test(ci): reject quoted floating runner selectors

* docs(changelog): record pinned runner repair

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 2 new potential issues.

Devin Review

Comment thread docs/LICENSING_AND_IP_TRANSFER.md
Comment thread docs/LICENSING_AND_IP_TRANSFER.md
@seonghobae
seonghobae merged commit 6b2b3e9 into main Sep 1, 2026
17 checks passed
@seonghobae
seonghobae deleted the docs/readme-product-refresh-20260901 branch September 1, 2026 19:59
seonghobae pushed a commit that referenced this pull request Sep 2, 2026
…with README/license/runner-pin PR #530/#532

Fast-forwards this PR's branch past two merges it was behind (5aad3e4 ->
6b2b3e9): PR #532 (pinned GitHub-hosted runner selectors, fixing a
floating-runner CI stall) and PR #530 (product-first README, Apache-2.0
root LICENSE + docs/index.md, dependency-license gap tracking for
issue #531). Both merged cleanly via git's 3-way merge except for one
genuine text conflict, plus one non-textual semantic incompatibility
surfaced only by running the test suite.

Text conflict resolved:
- docs/product-technical-gap-baseline.md: both PRs independently
  rewrote the same "Authority and update rule" snapshot line and the
  same three-row "Live external observation" table (this PR's lane
  recorded open-PR/hourly-loop governance state as of dd6ff2a; #530's
  lane recorded README/license-lane state as of 5aad3e4). Combined
  both lanes' distinct observations into one merged snapshot paragraph
  and a six-row table (kept both PR lanes' rows, merged the two
  differently-worded "Release/publication" rows into one), and
  corrected the now-stale "PR #530 is open" claim to reflect that it
  has since merged into protected main at 6b2b3e9 (directly evidenced
  by this merge, not fabricated). No test asserts this table's exact
  wording (test/documentation-architecture-contract.test.ts only checks
  for specific issue-number substrings), so no other file needed this
  treatment.

Files independently changed by only one side (ci.yml,
patch-validator-image.yml, reviewer-ci.yml, README.md,
docs/LICENSING_AND_IP_TRANSFER.md,
docs/security/private-vulnerability-reporting-audit.md,
scripts/lib/private-vulnerability-reporting-audit.mjs,
scripts/private-vulnerability-reporting-audit.mjs, associated tests)
and files both sides touched in disjoint regions (CHANGELOG.md;
scripts/acquisition-readiness-audit.mjs, where this PR's new
MAX_SOURCE_DOCUMENTS/source_documents digest-binding logic near the
top of the file and #530's packageDistributionApplies/
packageMetadataDeclared licensing logic near the bottom do not
overlap) merged automatically with no marker conflicts; verified by
diffing each side against the merge base and confirming both sides'
additions are present in the merged result.

Semantic fix (not a git conflict, found via tests):
- test/acquisition-source-only-license.test.ts (added by #530, so
  written without knowledge of this PR's stricter contract) built its
  transfer-evidence.json fixture with the pre-#526 loose format
  `source_documents: ["legal/review-record.pdf"]` (a bare string
  label). This PR's whole purpose is to replace that with bounded
  structured `{path, sha256}` retained-artifact bindings, so the new
  validateDigestBoundArtifact check correctly rejected the old-format
  fixture ("source_documents[0] artifact binding required"). Updated
  the fixture to emit a real digest-bound artifact via the file's own
  existing digestArtifact() helper, matching the same pattern already
  used by the currently-passing test/acquisition-transfer-rights.test.ts
  fixture. This is the deliberate, intended tightening this PR
  introduces; the fixture simply hadn't been written against it yet.

Verification:
- npm run typecheck: clean, no errors.
- npm test (Node 24.19.0, matching devEngines/CI): 3737 passed, 0
  failed, 1 pre-existing unrelated skip, after the fixture fix above.
- Established a pre-existing-failure baseline by running the full
  suite twice on an unmodified fresh origin/main checkout: it is not
  perfectly stable under this sandbox's full-parallel test run (534/534
  on one run, 1 failure in test/acquisition-review-regressions.test.ts
  on another, both with byte-identical source) - a pre-existing,
  environment-specific flake where tests that fail-closed-verify the
  live working tree against exact HEAD, or share one on-disk output
  directory, race against sibling test files under full-suite
  parallelism. The 5 non-source_documents failures initially observed
  on this branch before finishing the merge commit (acquisition-data-
  room-manifest x2, acquisition-output-symlink x2,
  dependency-license-inventory-release-wiring x1) were an artifact of
  running those exact-HEAD integrity checks against a working tree that
  legitimately did not yet match any commit (HEAD was still eaebeec
  while the tree already held the in-progress merge); each passes
  individually once run against a worktree whose HEAD matches its tree,
  confirmed by rerunning them standalone both before and after this
  commit.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BV96rXhqoR3tYZ9AeAVur4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant