Skip to content

docs/community/legal: optimize repository health, structure, and compliance#251

Open
java-ai-mlm wants to merge 1 commit into
rohitg00:mainfrom
java-ai-mlm:optimize-repo-health
Open

docs/community/legal: optimize repository health, structure, and compliance#251
java-ai-mlm wants to merge 1 commit into
rohitg00:mainfrom
java-ai-mlm:optimize-repo-health

Conversation

@java-ai-mlm
Copy link
Copy Markdown

@java-ai-mlm java-ai-mlm commented Jun 3, 2026

This PR applies the repository optimization guidelines
Summary:
Here is a bullet-point summary of the changes made and submitted in the Pull Request:

  • README Enhancements (text):
    • Added the project's primary H1 title (# AI Engineering from Scratch) right after the main banner image.
    • Renamed the ## Getting started heading to ## Quick start to pass standard automated usage checks.
    • Renamed the ## How this works heading to ## How it works to satisfy the "Architecture/How it works" section check.
    • Added a structured FAQ section near the end of the README addressing licenses, languages, and contribution guidance.
    • Renamed the ## Contents heading to ## Table of Contents to pass standard document navigation checks.
  • Legal & Compliance Files (Legal Compliance):
    • Created SECURITY.md defining security policy, reporting guidelines, and response timelines.
    • Created CITATION.cff to enable proper academic/project citation.
    • Created SUPPORT.md outlining project support expectations.
    • Created .github/CODEOWNERS file to route reviews to maintainers.
  • Community Health Files (Community Health ):
    • Created .devcontainer/devcontainer.json for rapid onboarding.
    • Replaced standard markdown issue templates with structured YAML templates (bug_report.yml, feature_request.yml, config.yml).
    • Standardized .github/PULL_REQUEST_TEMPLATE.md to guide incoming contributors.
    • Added .gitattributes to ensure stable language-bar indexing behavior.
    • Structured and updated CONTRIBUTING.md.
  • Maintenance & Release Automation (Release score):
    • Created .github/dependabot.yml to automate dependency security updates.
    • Created .github/release.yml to automate release notes generation.
    • Created .github/workflows/ci.yml defining basic continuous integration checks.
    • Configured .gitignore to prevent committing local .github-audit caches.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jun 3, 2026

Review Change Stack

📝 Walkthrough

Walkthrough

This pull request establishes comprehensive repository infrastructure for the project: development environment configuration, GitHub workflows and templates, automated dependency and release management, and community documentation including security policies, contribution guidelines, and support channels.

Changes

Repository Infrastructure Setup

Layer / File(s) Summary
Development environment and local git configuration
.devcontainer/devcontainer.json, .gitattributes, .gitignore
Devcontainer defines a Python-based development environment with pip dependencies and VS Code extensions. Gitattributes configures language detection for minified files, vendored directories, shell/PowerShell scripts, and Markdown. Gitignore adds .github-audit/ exclusion.
GitHub repository ownership and issue/PR templates
.github/CODEOWNERS, .github/ISSUE_TEMPLATE/bug_report.yml, .github/ISSUE_TEMPLATE/config.yml, .github/ISSUE_TEMPLATE/feature_request.yml, .github/PULL_REQUEST_TEMPLATE.md
CODEOWNERS assigns global ownership. Issue templates define structured forms for bug reports and feature requests with required fields and labels. PR template is rewritten with Summary, Type of Change, Testing, and Checklist sections.
Dependency and release automation workflows
.github/dependabot.yml, .github/release.yml, .github/workflows/ci.yml
Dependabot configuration enables weekly updates for pip and GitHub Actions dependencies. Release workflow defines changelog categories and exclusion rules. CI workflow runs Markdown linting on every push and pull request to main.
Project metadata and community documentation
CITATION.cff, README.md, CONTRIBUTING.md, SECURITY.md, SUPPORT.md
Citation metadata added for software referencing. README expanded with title, FAQ section covering free licensing and supported languages. CONTRIBUTING guide simplified with setup, PR workflow, and style sections. SECURITY policy defines vulnerability reporting and response timeline. SUPPORT document directs users to appropriate channels for questions, bugs, features, and security issues.

🎯 1 (Trivial) | ⏱️ ~3 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main changes: adding documentation, community, and legal files to optimize repository health, structure, and compliance.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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 The pull request description is directly related to the changeset. It provides a detailed bullet-point summary of the changes across README enhancements, legal/compliance files, community health files, and maintenance automation.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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 and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🧹 Nitpick comments (2)
.devcontainer/devcontainer.json (1)

2-2: ⚡ Quick win

Unusual Unicode characters in devcontainer name.

The name contains box-drawing characters (├──) that may not render correctly in all terminals or IDEs. Consider using a simpler ASCII name like "AI Engineering Dev Container" or "Python Dev Environment" for better compatibility.

Additionally, the specific reference to "prompt-loss-function-selector.md" seems oddly narrow for a repository-wide devcontainer configuration.

📝 Proposed fix for compatibility
-  "name": "├── prompt-loss-function-selector.md Dev",
+  "name": "AI Engineering Dev Container",
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.devcontainer/devcontainer.json at line 2, The devcontainer.json "name"
property contains box-drawing Unicode characters and a file-specific reference
("prompt-loss-function-selector.md"); update the "name" value to a simple ASCII,
repo-appropriate label (e.g., "AI Engineering Dev Container" or "Python Dev
Environment") to improve terminal/IDE compatibility and avoid implying the
container is specific to a single markdown file; edit the "name" field in
.devcontainer/devcontainer.json accordingly.
.github/workflows/ci.yml (1)

13-13: ⚖️ Poor tradeoff

Consider pinning actions to commit SHAs and disabling credential persistence.

Static analysis flagged two security improvements:

  1. Action pinning: Using version tags (@v4, @v19) instead of commit SHAs allows tag moving/retagging attacks. For supply chain security, pin to immutable commit hashes.
  2. Credential persistence: The default persist-credentials: true can leak credentials through artifacts.
🔒 Proposed hardening
     steps:
-      - uses: actions/checkout@v4
+      - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+        with:
+          persist-credentials: false
       - name: Lint Markdown
-        uses: DavidAnson/markdownlint-cli2-action@v19
+        uses: DavidAnson/markdownlint-cli2-action@db1b0f7c0f37e781a23112bea83dce99f0b0c2ff # v19.0.0

Note: This improves supply chain security but increases maintenance burden (you'll need to update commit SHAs manually or use Dependabot for GitHub Actions, which is already configured in this PR).

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/ci.yml at line 13, Update the GitHub Actions workflow to
pin third-party actions to immutable commit SHAs instead of tags (replace usages
like actions/checkout@v4 with the corresponding commit SHA) and disable
credential persistence by setting persist-credentials: false on the checkout
step; search for occurrences of actions/checkout and any other actions
referenced by tag (e.g., other actions@vX entries) and replace them with their
commit SHAs, and add persist-credentials: false under the checkout step to
prevent leaking credentials.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@CITATION.cff`:
- Around line 3-4: Update the CITATION.cff metadata by replacing the incorrect
copy-paste values that reference "├── prompt-loss-function-selector.md" with the
correct repository-wide title and abstract: change the title field from "├──
prompt-loss-function-selector.md" to "AI Engineering from Scratch" and update
the abstract field to a descriptive summary such as "A comprehensive curriculum
covering 503 lessons across 20 phases..." so the 'title' and 'abstract' entries
reflect the actual project name and purpose.

In `@CONTRIBUTING.md`:
- Line 1: Update the top-level title line that currently reads "# Contributing
to ├── prompt-loss-function-selector.md" by removing the tree-artifact "├──" and
replacing the file reference with the repository name (e.g., "Contributing to
<repository-name>") so the document title correctly identifies the repo instead
of a copied tree entry; locate and edit the header line in CONTRIBUTING.md to
remove the prefix and set the proper repo name.

In `@SECURITY.md`:
- Line 11: In SECURITY.md find the reference string '├──
prompt-loss-function-selector.md' and replace it with the actual repository name
(no tree-prefix characters) so the line reads the repo name responsible for
reporting security issues; ensure you remove the leading box-drawing character
and any extra whitespace or punctuation so the repository name appears plainly
in the sentence.
- Line 14: The SECURITY.md currently contains a placeholder contact "[REPLACE:
security-contact@example.com]"; update that string to a valid security contact
by replacing it with the maintainer/security team's real email address (or
remove the email option entirely and document that GitHub Security Advisories is
the only supported channel) so private vulnerability reports can be received;
ensure the replacement appears exactly where the placeholder string currently
exists and keep the GitHub Security Advisories link intact.

---

Nitpick comments:
In @.devcontainer/devcontainer.json:
- Line 2: The devcontainer.json "name" property contains box-drawing Unicode
characters and a file-specific reference ("prompt-loss-function-selector.md");
update the "name" value to a simple ASCII, repo-appropriate label (e.g., "AI
Engineering Dev Container" or "Python Dev Environment") to improve terminal/IDE
compatibility and avoid implying the container is specific to a single markdown
file; edit the "name" field in .devcontainer/devcontainer.json accordingly.

In @.github/workflows/ci.yml:
- Line 13: Update the GitHub Actions workflow to pin third-party actions to
immutable commit SHAs instead of tags (replace usages like actions/checkout@v4
with the corresponding commit SHA) and disable credential persistence by setting
persist-credentials: false on the checkout step; search for occurrences of
actions/checkout and any other actions referenced by tag (e.g., other actions@vX
entries) and replace them with their commit SHAs, and add persist-credentials:
false under the checkout step to prevent leaking credentials.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 6eae75ba-bd2a-4908-a2fd-a7556da59c6a

📥 Commits

Reviewing files that changed from the base of the PR and between 44b9b14 and c6aecef.

📒 Files selected for processing (16)
  • .devcontainer/devcontainer.json
  • .gitattributes
  • .github/CODEOWNERS
  • .github/ISSUE_TEMPLATE/bug_report.yml
  • .github/ISSUE_TEMPLATE/config.yml
  • .github/ISSUE_TEMPLATE/feature_request.yml
  • .github/PULL_REQUEST_TEMPLATE.md
  • .github/dependabot.yml
  • .github/release.yml
  • .github/workflows/ci.yml
  • .gitignore
  • CITATION.cff
  • CONTRIBUTING.md
  • README.md
  • SECURITY.md
  • SUPPORT.md

Comment thread CITATION.cff
Comment on lines +3 to +4
title: "├── prompt-loss-function-selector.md"
abstract: "Repository for ├── prompt-loss-function-selector.md."
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Correct the citation title and abstract.

The title and abstract fields reference ├── prompt-loss-function-selector.md, which appears to be a copy-paste artifact from a directory tree listing. This doesn't match the repository name or purpose.

Expected values should reference the full curriculum, such as:

  • title: "AI Engineering from Scratch"
  • abstract: "A comprehensive curriculum covering 503 lessons across 20 phases..."
📝 Proposed fix
-title: "├── prompt-loss-function-selector.md"
-abstract: "Repository for ├── prompt-loss-function-selector.md."
+title: "AI Engineering from Scratch"
+abstract: "A comprehensive curriculum covering AI engineering from mathematical foundations to autonomous systems, with 503 lessons across 20 phases in Python, TypeScript, Rust, and Julia."
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
title: "├── prompt-loss-function-selector.md"
abstract: "Repository for ├── prompt-loss-function-selector.md."
title: "AI Engineering from Scratch"
abstract: "A comprehensive curriculum covering AI engineering from mathematical foundations to autonomous systems, with 503 lessons across 20 phases in Python, TypeScript, Rust, and Julia."
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@CITATION.cff` around lines 3 - 4, Update the CITATION.cff metadata by
replacing the incorrect copy-paste values that reference "├──
prompt-loss-function-selector.md" with the correct repository-wide title and
abstract: change the title field from "├── prompt-loss-function-selector.md" to
"AI Engineering from Scratch" and update the abstract field to a descriptive
summary such as "A comprehensive curriculum covering 503 lessons across 20
phases..." so the 'title' and 'abstract' entries reflect the actual project name
and purpose.

Comment thread CONTRIBUTING.md
@@ -1,163 +1,38 @@
# Contributing
# Contributing to ├── prompt-loss-function-selector.md
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Correct the document title.

The title references ├── prompt-loss-function-selector.md with a tree prefix character, which appears to be a copy-paste artifact. It should reference the repository name instead.

📝 Proposed fix
-# Contributing to ├── prompt-loss-function-selector.md
+# Contributing to AI Engineering from Scratch
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# Contributing to ├── prompt-loss-function-selector.md
# Contributing to AI Engineering from Scratch
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@CONTRIBUTING.md` at line 1, Update the top-level title line that currently
reads "# Contributing to ├── prompt-loss-function-selector.md" by removing the
tree-artifact "├──" and replacing the file reference with the repository name
(e.g., "Contributing to <repository-name>") so the document title correctly
identifies the repo instead of a copied tree entry; locate and edit the header
line in CONTRIBUTING.md to remove the prefix and set the proper repo name.

Comment thread SECURITY.md

## Reporting a Vulnerability

If you discover a security vulnerability in ├── prompt-loss-function-selector.md, please report it responsibly:
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Correct the project name reference.

Line 11 references ├── prompt-loss-function-selector.md with a tree prefix character. This should be the repository name.

📝 Proposed fix
-If you discover a security vulnerability in ├── prompt-loss-function-selector.md, please report it responsibly:
+If you discover a security vulnerability in this project, please report it responsibly:
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
If you discover a security vulnerability in ├── prompt-loss-function-selector.md, please report it responsibly:
If you discover a security vulnerability in this project, please report it responsibly:
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@SECURITY.md` at line 11, In SECURITY.md find the reference string '├──
prompt-loss-function-selector.md' and replace it with the actual repository name
(no tree-prefix characters) so the line reads the repo name responsible for
reporting security issues; ensure you remove the leading box-drawing character
and any extra whitespace or punctuation so the repository name appears plainly
in the sentence.

Comment thread SECURITY.md
If you discover a security vulnerability in ├── prompt-loss-function-selector.md, please report it responsibly:

1. Do not open a public GitHub issue for security vulnerabilities.
2. Email `[REPLACE: security-contact@example.com]` or use [GitHub Security Advisories](https://github.com/rohitg00/ai-engineering-from-scratch/security/advisories/new) to report privately.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Replace the placeholder security contact email.

The email address is a placeholder ([REPLACE: security-contact@example.com]) that must be replaced with a real contact before this policy is functional. Without a valid email, security researchers cannot report vulnerabilities privately.

🔒 Suggested fix

Replace [REPLACE: security-contact@example.com] with:

  • The maintainer's actual security contact email, or
  • Remove the email option entirely if GitHub Security Advisories is the only supported channel
-2. Email `[REPLACE: security-contact@example.com]` or use [GitHub Security Advisories](https://github.com/rohitg00/ai-engineering-from-scratch/security/advisories/new) to report privately.
+2. Use [GitHub Security Advisories](https://github.com/rohitg00/ai-engineering-from-scratch/security/advisories/new) to report privately.

Or provide a real email:

-2. Email `[REPLACE: security-contact@example.com]` or use [GitHub Security Advisories](https://github.com/rohitg00/ai-engineering-from-scratch/security/advisories/new) to report privately.
+2. Email `security@example.com` or use [GitHub Security Advisories](https://github.com/rohitg00/ai-engineering-from-scratch/security/advisories/new) to report privately.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
2. Email `[REPLACE: security-contact@example.com]` or use [GitHub Security Advisories](https://github.com/rohitg00/ai-engineering-from-scratch/security/advisories/new) to report privately.
2. Use [GitHub Security Advisories](https://github.com/rohitg00/ai-engineering-from-scratch/security/advisories/new) to report privately.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@SECURITY.md` at line 14, The SECURITY.md currently contains a placeholder
contact "[REPLACE: security-contact@example.com]"; update that string to a valid
security contact by replacing it with the maintainer/security team's real email
address (or remove the email option entirely and document that GitHub Security
Advisories is the only supported channel) so private vulnerability reports can
be received; ensure the replacement appears exactly where the placeholder string
currently exists and keep the GitHub Security Advisories link intact.

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.

2 participants