Skip to content

Publish permanent licensing posture and advisory DCO check - #1337

Merged
Chris0Jeky merged 6 commits into
mainfrom
issue-1299/licensing-pack
Jul 25, 2026
Merged

Publish permanent licensing posture and advisory DCO check#1337
Chris0Jeky merged 6 commits into
mainfrom
issue-1299/licensing-pack

Conversation

@Chris0Jeky

Copy link
Copy Markdown
Owner

Summary

  • publish the permanent MIT-forever and additive-only commercial-module commitment
  • reserve ee/ with an explicit separately licensed placeholder
  • require DCO sign-offs in contributor guidance and add a SHA-pinned advisory DCO job
  • declare MIT in npm and all .NET project metadata
  • link the licensing commitment from the README

Closes #1299

Implementation notes

  • The root LICENSE is intentionally unchanged.
  • LICENSING.md preserves every existing MIT grant, defines the never-gated free boundary, and keeps any future commercial capability additive and separately licensed.
  • The DCO job uses KineticCafe/actions-dco v3.1.0, pinned to immutable commit 1da04282bbf757dab7d92a5c8535dbfb8113da5c.
  • DCO is advisory through the first rollout week (target 2026-07-20) via job-level continue-on-error: true; branch-protection promotion remains maintainer-owned under Register the three required security-scan check contexts in branch protection (#1132 follow-up) #1173.
  • Every commit in this PR carries a matching Signed-off-by: trailer.

Verification

  • node scripts/check-docs-governance.mjs — passed
  • actionlint v1.7.12 on .github/workflows/ci-required.yml — passed
  • parsed all 11 *.csproj files and verified exactly one PackageLicenseExpression=MIT — passed
  • parsed package.json / package-lock.json and verified license=MIT — passed
  • dotnet restore backend/Taskdeck.sln — passed
  • dotnet build backend/Taskdeck.sln -c Release --no-restore — passed (0 errors; 12 pre-existing warnings)
  • dotnet test backend/Taskdeck.sln -c Release -m:1 --no-build — passed: 6,823 passed, 0 failed, 1 pre-existing INV-09 skip
  • npm run typecheck — passed
  • npm run build — passed
  • npx vitest --run — passed: 297 files / 3,756 tests
  • git diff --check origin/main...HEAD — passed
  • root LICENSE diff against origin/main — empty

Docs impact

Human-only / maintainer decisions

Merge status and residual risk

NEVER MERGE TONIGHT. This PR changes the required CI workflow and every .NET project file, requires maintainer licensing-wording approval, and retains the human-only trademark gate. It must receive the FULL review/bot/CI process and maintainer approval.

Residual risks: legal wording is project policy, not legal advice; bot/remediation behavior still needs live PR evidence from the new DCO job; the trademark boundary makes no availability or registration claim.

Signed-off-by: Chris0Jeky <jeky.tck@gmail.com>
Signed-off-by: Chris0Jeky <jeky.tck@gmail.com>
Signed-off-by: Chris0Jeky <jeky.tck@gmail.com>
Signed-off-by: Chris0Jeky <jeky.tck@gmail.com>

Copy link
Copy Markdown
Owner Author

Self-review — FULL tier, pass 1

Reviewed the complete 19-file diff against origin/main and inspected all current PR conversation comments, reviews, and inline comments. None were present.

Findings: no actionable CRITICAL, HIGH, MEDIUM, or LOW findings.

Checks performed during review:

  • confirmed the root LICENSE has no diff
  • confirmed the pledge preserves existing MIT grants while isolating only future explicitly licensed modules
  • confirmed every permanent-free-boundary item from the docs: revival pivot (ADR-0044) - open-beta direction, REVIVAL_PLAN spine, canonical doc sync #1296 revival plan is present
  • confirmed ee/LICENSE contains no commercial product terms or code
  • confirmed all 11 .NET projects and both npm metadata files declare MIT
  • confirmed the DCO action is pinned to the immutable upstream v3.1.0 commit, has read-only permissions, is PR-scoped, and remains advisory through job-level continue-on-error
  • confirmed all four PR commits carry matching sign-off trailers
  • confirmed the live DCO (advisory) check passed on this PR
  • re-ran docs governance, actionlint, diff-check, Release build, the full backend suite, and required frontend checks locally

Residual risks / unverified:

  • the commitment wording still requires maintainer approval and is not legal advice
  • trademark availability remains deliberately unsearched and HUMAN-ONLY
  • bot/remediation behavior for a deliberately unsigned contributor commit was not exercised
  • GitHub CI and the required fresh independent FULL review are still in progress

This PR remains NEVER MERGE TONIGHT because it changes required CI/workflow conventions and project files and has maintainer-owned legal/trademark decisions.

@gemini-code-assist gemini-code-assist 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.

Code Review

This pull request introduces a Developer Certificate of Origin (DCO) policy in CONTRIBUTING.md and establishes a clear licensing commitment in LICENSING.md, confirming the permanent free-core boundary under the MIT license. Additionally, it updates project metadata across backend (.csproj) and frontend (package.json) files to explicitly declare the MIT license. The review feedback suggests standardizing the spelling of "license" (US spelling) instead of "licence" (UK spelling) across the newly added documentation files for consistency.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread CONTRIBUTING.md
Comment thread LICENSING.md Outdated
Comment thread LICENSING.md Outdated
Comment thread LICENSING.md Outdated
Comment thread LICENSING.md Outdated
Comment thread LICENSING.md Outdated
Signed-off-by: Chris0Jeky <jeky.tck@gmail.com>

Copy link
Copy Markdown
Owner Author

Review fix evidence — Gemini round 1

Finding Fix Verification
MEDIUM: use repository-consistent US license terminology in CONTRIBUTING.md and LICENSING.md (six threads) 4ae430dd standardizes all nine scoped occurrences, including the unflagged ee/LICENSE notice zero-hit `rg -n "licence

Replied to and resolved all six inline threads. The push triggered a fresh CI/bot round; those checks are pending. The earlier self-review comment counted four commits before this batched review-fix commit; the branch now has five, all with matching DCO sign-offs.

Copy link
Copy Markdown
Owner Author

CI Extended failure classification — current head 4ae430dd

CI Extended run 29222076073 ended in startup_failure before creating any job. GitHub reports a workflow-file issue and provides no job log.

This exactly matches tracked Priority I issue #1330: ci-extended.yml calls the reusable Gitleaks workflow without granting its requested pull-requests: read permission. The defect predates this branch and has cross-PR evidence on unrelated lanes. It is not a test flake and was not dismissed.

No workaround or rerun can make the unchanged invalid caller succeed. Fixing #1330 changes CI permission conventions and is explicitly maintainer-owned, so it is not folded into this licensing PR. Consequently #1337 remains CI-blocked and NEVER MERGE TONIGHT, even if required CI becomes green.

Copy link
Copy Markdown
Owner Author

Fixed-diff self-review — 4ae430dd

Re-reviewed the complete review-fix commit and all updated licensing passages. The change is a terminology-only substitution; it does not alter the licensing boundary or DCO behavior. No additional findings at any severity.

Verified: all six Gemini threads resolved, no scoped licence/Licence occurrences remain, docs governance passes, diff-check passes, and the fifth commit carries a matching DCO sign-off. Fresh GitHub CI/bot checks remain pending; CI Extended is separately blocked by #1330 as documented above.

@Chris0Jeky Chris0Jeky left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Fresh independent FULL-tier adversarial review — 4ae430dd05b2a4314bc1a9cc76f57f28fe0fe9cf

Findings: no actionable CRITICAL, HIGH, MEDIUM, or LOW findings at this exact head.

Scope and evidence

  • Reviewed the complete 19-file / 128-insertion diff against base 68f218cf, issue #1299, and the licensing boundary on the #1296 branch.
  • Licensing wording matches that boundary: existing MIT grants are permanent; future commercial work is additive and separately licensed; the core capture → proposal → review → apply loop, export/portability, BYO-key/local-LLM use, and single-user self-hosting remain free; already-free MFA, OIDC, and board sharing remain free.
  • Root LICENSE is byte-identical at base and head (same Git blob 8924315e…). ee/ contains only ee/LICENSE, which excludes the reserved path from the root grant and contains no product code.
  • All 11 *.csproj files contain exactly one PackageLicenseExpression=MIT; frontend/taskdeck-web/package.json and its lockfile both carry the MIT root-package metadata. The existing VS Code package metadata was already MIT. README and Testing Guide links/wording are coherent.
  • All five PR commits have a matching author/committer Signed-off-by: trailer.

DCO workflow / upstream provenance

  • KineticCafe/actions-dco release v3.1.0 is a lightweight tag resolving exactly to 1da04282bbf757dab7d92a5c8535dbfb8113da5c, matching the full-length immutable pin in this PR.
  • The pinned action runs on Node 24, receives only contents: read, pull-requests: read, and implicit metadata read, does not check out PR code, and runs only for pull_request. Job-level continue-on-error: true keeps this rollout advisory while leaving the DCO job visible.
  • Exact-head job DCO (advisory) downloaded that exact SHA, reported KineticCafe/dco-check 3.1.0, evaluated the comparison, and passed.
  • Provenance caveat: GitHub reports the pinned upstream commit as unsigned/unverified. The tag→SHA mapping and release provenance are confirmed, but I did not independently reproduce the bundled dist/dco_check.cjs build.
  • Rollout caveat: upstream defaults skip merge commits and bot-authored commits; a deliberately unsigned human commit/remediation path was not exercised here. The PR already leaves bot/remediation behavior for the advisory observation week before #1173 enforcement.

Comments, checks, and closing linkage

  • Audited 4 conversation comments, 7 review submissions, and 12 inline comments forming 6 review threads. All six Gemini MEDIUM spelling threads were fixed in 4ae430dd, replied to, and resolved. Unresolved review threads: 0.
  • gh pr checks: 21/21 pass, 0 failed, 0 pending. Required CI run 29222076085 and CodeQL run 29222074686 completed successfully, including E2E.
  • Merge blocker remains: CI Extended run 29222076073 ended in startup_failure with zero jobs. Its exact annotation says ci-extended.yml calls reusable Gitleaks requesting pull-requests: read while the caller allows none. This is the systemic, independently reproduced defect tracked by Priority I #1330; it is not flaky and this PR must not merge while it remains failed.
  • GitHub reports exactly one closing reference: #1299. No other issue is linked for closure.

Verification and residual gates

  • Passed: git diff --check 68f218cf...4ae430dd; root-license blob comparison; exact-head tree/metadata enumeration; five-commit sign-off audit; upstream tag/commit/release inspection; full comment/thread audit; live exact-head check/run audit.
  • Not performed: the HUMAN-ONLY Taskdeck trademark/domain/package-namespace search. No USPTO, EUIPO, domain, npm, NuGet, or Docker Hub availability query was made.
  • Maintainer approval of the MIT-forever/free-boundary/commercial-module/trademark wording remains required. This review is technical/process review, not legal advice.
  • I did not approve or merge. The draft remains blocked by #1330 plus the maintainer-only licensing and trademark gates.

Resolves two conflicts that both came from main moving under this branch:

- README.md: the branch still carried the SUPERSEDED archive framing ('Personal
  Project ... will be archived once it is finished'), which ADR-0044 replaced
  with the revival direction. Took main's structure wholesale and dropped that
  section. Main already has a 'License and security' section whose text says the
  complete licensing posture 'is the v0.1 REVIVAL-03 deliverable' -- a forward
  reference to this PR -- so it now points at LICENSING.md instead of promising
  it, which is the only edit this branch still needs there.
- docs/TESTING_GUIDE.md: Last Updated date only; took main's (2026-07-14).

No licensing text was changed by this merge. LICENSING.md, ee/LICENSE, the DCO
job, and the MIT package metadata are exactly as reviewed.
@Chris0Jeky

Copy link
Copy Markdown
Owner Author

Rebased onto current main — now mergeable, and one decision away

This was CONFLICTING and ~5 commits behind. Merged main in (ed43faa0); mergeable: true, docs gates pass. Left as a draft deliberately — the remaining gates are yours, not technical, and un-drafting would misrepresent it as ready to land.

Conflicts resolved, and one was substantive

file resolution
docs/TESTING_GUIDE.md Last Updated date only — took main's 2026-07-14.
README.md Substantive. The branch still carried the superseded archive framing"Taskdeck is built for the maintainer's personal use and will be archived once it is finished" — which ADR-0044 replaced. Took main's structure wholesale and dropped that section.

The README resolution turned out neatly: main's License and security section already said

"the complete licensing posture is the v0.1 REVIVAL-03 deliverable"

— a forward reference to this PR. It now points at LICENSING.md instead of promising it, which was the only edit this branch still needed there.

No licensing text was touched by the merge. Verified after: LICENSING.md, ee/LICENSE and CONTRIBUTING.md present; the root LICENSE is byte-identical to main (git diff origin/main HEAD -- LICENSE empty); MIT metadata still declared across all 11 .csproj files.

Your two gates

1. Trademark clearance — the research is now done and it is on #1299. Headline: no registered TASKDECK mark exists anywhere (control-validated zeros at USPTO, TMview covering EUIPO/UK/US/~89 offices, and WIPO — each re-run with a known-hit control so a broken query could not masquerade as a clean result). Every package namespace you ship through is free.

But three live products already use the exact name — including tasksdeck.com, "TaskDeck — AI Task Generator for Developers", which is essentially our own pitch under our own name — and the real risk is registrability, not collision: TASK is near-descriptive and 507 GB+EU marks contain "deck" in Class 9/42. Plus TASKADE holds a live, now-incontestable US Class 42 registration expressly covering task management.

Verdict there: proceed-with-precautionsfine for a free MIT beta, poor to build a business on. Which is roughly what this PR already commits to.

Caveat that matters for this PR specifically: UKIPO's own register hard-blocked automated access, so all GB coverage is indirect via TMview, which EUIPO states is not an official register.

2. The wording. LICENSING.md's MIT-forever, free-boundary and additive-only commercial language is a public, permanent commitment. That is yours to sign off, not mine to infer — it is the one thing in this queue I deliberately did not decide for you.

Recommendation

The research supports proceeding under this name for the beta. If the wording reads right to you, this is mergeable now. If you would rather settle the keep-or-rename question first, do it before v0.1.0 (#1303) — renaming is nearly free today and expensive after a tagged release, and this PR is what makes the name a published commitment.

I can merge it the moment you say the wording is good.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@Chris0Jeky
Chris0Jeky merged commit d6dadbd into main Jul 25, 2026
51 checks passed
@github-project-automation github-project-automation Bot moved this from Blocked to Done in Taskdeck Execution Jul 25, 2026

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ed43faa08b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread README.md
## License and security

Taskdeck is released under the [MIT License](LICENSE). The revival commitment is that code already shipped under MIT stays MIT; the complete licensing posture is the v0.1 [REVIVAL-03](https://github.com/Chris0Jeky/Taskdeck/issues/1299) deliverable.
Taskdeck is released under the [MIT License](LICENSE). The permanent free-core boundary, the MIT-forever commitment for code already shipped, and the additive-only posture for any future commercial module are documented in [LICENSING.md](LICENSING.md) (REVIVAL-03, [#1299](https://github.com/Chris0Jeky/Taskdeck/issues/1299)).

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Rehydrate the canonical licensing status

When this commit lands, it publishes the licensing pack and activates the advisory DCO job, but docs/IMPLEMENTATION_MASTERPLAN.md:152 still says the licensing pack is “NOT merged,” while docs/STATUS.md:26 continues to describe the entire pack as a hold instead of separating the delivered implementation from the outstanding human-only trademark clearance. Update both canonical documents in this change so shipped reality and the remaining gate are unambiguous.

AGENTS.md reference: AGENTS.md:L116-L118

Useful? React with 👍 / 👎.

pull-requests: read
steps:
- name: Check commit sign-offs
uses: KineticCafe/actions-dco@1da04282bbf757dab7d92a5c8535dbfb8113da5c # v3.1.0

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Update the README's pre-DCO wording

Once this PR-only job runs from main, README.md:169 will still tell contributors that the DCO check is not active until REVIVAL-03 lands, and line 13 continues to present the commitment and gate as future work. That directly contradicts this newly active advisory check and the published LICENSING.md; update those pre-landing passages as part of this rollout.

Useful? React with 👍 / 👎.

Comment thread docs/TESTING_GUIDE.md
- `dco`
- Checks every pull-request commit for a DCO `Signed-off-by:` trailer with the
SHA-pinned `KineticCafe/actions-dco` action
- **Advisory** through the first rollout week, targeted to end 2026-07-20

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Set a rollout window that has not already expired

This commit is dated 2026-07-25, so the newly added check is being introduced five days after the documented 2026-07-20 end of its “initial” advisory week. Because the workflow sets continue-on-error: true without any time-based transition, it will remain advisory indefinitely until another code/settings change despite this text implying that the observation window has ended; base the date on actual activation or describe the rollout as manually gated without an expired deadline.

Useful? React with 👍 / 👎.

Comment thread CONTRIBUTING.md
Comment on lines +234 to +236
Every commit must include a `Signed-off-by:` trailer certifying the
[Developer Certificate of Origin 1.1](https://developercertificate.org/).
Create the trailer from your configured Git name and email with `-s`:

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Update automated commit instructions for DCO

Automated contributors are routed to AGENTS.md by README.md:171, but AGENTS.md:85, .codex/skills/taskdeck-worktree-issue-worker/SKILL.md:44, and the batch orchestrator at line 69 still instruct agents to commit with --no-gpg-sign without adding -s/--signoff. Agents following these authoritative paths will keep producing unsigned commits and trip the DCO check once it is enforced; update the automated and mirrored worker instructions to add sign-off while retaining the separate no-GPG behavior.

AGENTS.md reference: AGENTS.md:L49-L51

Useful? React with 👍 / 👎.

@Chris0Jeky
Chris0Jeky deleted the issue-1299/licensing-pack branch July 31, 2026 16:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

REVIVAL-03: Licensing posture pack - LICENSING.md, MIT-forever commitment, DCO + CI check, ee/ placeholder, trademark search

2 participants