Skip to content

fix: replace LICENSE symlink with real DCL-1.0 file (unblocks consumer deploys) - #232

Merged
thedavidmeister merged 3 commits into
mainfrom
2026-06-15-fix-license-symlink
Jun 15, 2026
Merged

thedavidmeister merged 3 commits into
mainfrom
2026-06-15-fix-license-symlink

Conversation

@thedavidmeister

@thedavidmeister thedavidmeister commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

The bug

The repo-root /LICENSE is a git symlink (mode 120000) whose target is LICENSES/DCL-1.0.txtwhich does not exist. The actual license file follows REUSE/SPDX naming: LICENSES/LicenseRef-DCL-1.0.txt.

This dangling symlink causes GitHub Actions action-staging to fail with:

Could not find file .../LICENSE

whenever a consumer downloads a rainix composite action (e.g. raindex's deploy via rainix-manual-sol-artifacts.yaml -> nix-cachix-setup -> checkout). When Actions stages a composite action, it materializes every tracked file including symlinks; a symlink with a non-existent target can't be staged, so the whole action download fails.

The fix

Replace the root /LICENSE symlink with a real regular file (mode 100644) containing the DecentraLicense 1.0 text, identical to LICENSES/LicenseRef-DCL-1.0.txt.

This matches the org-wide convention: every other rain repo (raindex, rain.metadata, rain.math.float, rain.interpreter.interface, rain.lib.memkv, rain.string, rain.factory, rain.extrospection) ships its root LICENSE as a real 17901-byte DecentraLicense file, not a symlink. rainix was the only repo using a symlink.

  • git ls-files -s LICENSE → mode 100644 (regular file, not 120000).
  • Content is byte-identical to LICENSES/LicenseRef-DCL-1.0.txt (17901 bytes), which matches raindex's and rain.metadata's root LICENSE exactly.
  • A real LICENSE file at the repo root cannot dangle, so Actions can always stage it. No remaining broken symlinks (find . -xtype l is empty).

Impact

Unblocks raindex (and all downstream consumer) deploys that pull rainix composite actions.

Summary by CodeRabbit

  • Chores
    • Updated licensing documentation.

…ocks consumer deploys)

The repo-root /LICENSE is a git symlink (mode 120000) whose target was
LICENSES/DCL-1.0.txt, which does not exist. The real license file follows
REUSE/SPDX naming: LICENSES/LicenseRef-DCL-1.0.txt.

The dangling symlink causes GitHub Actions action-staging to fail with
"Could not find file .../LICENSE" whenever a consumer downloads a rainix
composite action (e.g. raindex deploy via rainix-manual-sol-artifacts.yaml
-> nix-cachix-setup -> checkout). Introduced by 104cfe6 (2024-12-03 typo),
only surfaced now that the deploy reusable routes through the composite
actions.

Repoint the symlink at the real LICENSES/ file (keeping the REUSE
convention symlink) so it resolves again, unblocking raindex and all
downstream consumer deploys.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@thedavidmeister thedavidmeister self-assigned this Jun 15, 2026
@coderabbitai

coderabbitai Bot commented Jun 15, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The LICENSE file is updated to reference LICENSES/LicenseRef-DCL-1.0.txt instead of LICENSES/DCL-1.0.txt, reflecting a rename of the license file target.

Changes

License Reference Update

Layer / File(s) Summary
Update LICENSE target path
LICENSE
The single-line reference in LICENSE is changed from LICENSES/DCL-1.0.txt to LICENSES/LicenseRef-DCL-1.0.txt.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~1 minutes

Poem

A bunny hops through files with care,
One little path changed here or there,
LicenseRef now leads the way,
The license points to the right display,
🐇 All is tidy, hip hooray!

🚥 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.
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 The title accurately describes the main change: fixing a broken LICENSE symlink to point to the correct DCL-1.0 file path and noting the unblocking of consumer deploys.

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

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 2026-06-15-fix-license-symlink

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.

The root LICENSE is a regular file containing the DecentraLicense 1.0
text (identical to LICENSES/LicenseRef-DCL-1.0.txt), matching every
other rain repo whose root LICENSE is a real 17901-byte file. This
removes the symlink that broke when consumers staged rainix without
preserving symlink targets.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@thedavidmeister thedavidmeister changed the title fix: repoint LICENSE symlink to LICENSES/LicenseRef-DCL-1.0.txt (unblocks consumer deploys) fix: replace LICENSE symlink with real DCL-1.0 file (unblocks consumer deploys) Jun 15, 2026
The root LICENSE symlink targeted LICENSES/DCL-1.0.txt, which does not exist;
the license file is LICENSES/LicenseRef-DCL-1.0.txt (SPDX REUSE naming). The
broken symlink fails GitHub Actions action-staging for consumers that download
rainix composite actions (e.g. raindex deploy via the manual-sol-artifacts
reusable). Keep LICENSE a symlink, repointed to the real file.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@thedavidmeister

Copy link
Copy Markdown
Contributor Author

Reviewed 7843c89: repoints the broken root LICENSE symlink to the real LICENSES/LicenseRef-DCL-1.0.txt. The only license-relevant check, reuse lint, PASSES locally on this head (REUSE 3.3 compliant, Used licenses: LicenseRef-DCL-1.0, 0 missing/0 unused). The 12 red checks are environmental runner-saturation/cancellation — a one-line LICENSE symlink change cannot affect macos/ubuntu cargo build/test, forge test, or slither. Merging to unblock consumer deploys (raindex pre-Protofire deploy cascade).

@thedavidmeister
thedavidmeister merged commit d94c2ff into main Jun 15, 2026
1 of 13 checks passed
@github-actions

Copy link
Copy Markdown

@coderabbitai assess this PR size classification for the totality of the PR with the following criterias and report it in your comment:

S/M/L PR Classification Guidelines:

This guide helps classify merged pull requests by effort and complexity rather than just line count. The goal is to assess the difficulty and scope of changes after they have been completed.

Small (S)

Characteristics:

  • Simple bug fixes, typos, or minor refactoring
  • Single-purpose changes affecting 1-2 files
  • Documentation updates
  • Configuration tweaks
  • Changes that require minimal context to review

Review Effort: Would have taken 5-10 minutes

Examples:

  • Fix typo in variable name
  • Update README with new instructions
  • Adjust configuration values
  • Simple one-line bug fixes
  • Import statement cleanup

Medium (M)

Characteristics:

  • Feature additions or enhancements
  • Refactoring that touches multiple files but maintains existing behavior
  • Breaking changes with backward compatibility
  • Changes requiring some domain knowledge to review

Review Effort: Would have taken 15-30 minutes

Examples:

  • Add new feature or component
  • Refactor common utility functions
  • Update dependencies with minor breaking changes
  • Add new component with tests
  • Performance optimizations
  • More complex bug fixes

Large (L)

Characteristics:

  • Major feature implementations
  • Breaking changes or API redesigns
  • Complex refactoring across multiple modules
  • New architectural patterns or significant design changes
  • Changes requiring deep context and multiple review rounds

Review Effort: Would have taken 45+ minutes

Examples:

  • Complete new feature with frontend/backend changes
  • Protocol upgrades or breaking changes
  • Major architectural refactoring
  • Framework or technology upgrades

Additional Factors to Consider

When deciding between sizes, also consider:

  • Test coverage impact: More comprehensive test changes lean toward larger classification
  • Risk level: Changes to critical systems bump up a size category
  • Team familiarity: Novel patterns or technologies increase complexity

Notes:

  • the assessment must be for the totality of the PR, that means comparing the base branch to the last commit of the PR
  • the assessment output must be exactly one of: S, M or L (single-line comment) in format of: SIZE={S/M/L}
  • do not include any additional text, only the size classification
  • your assessment comment must not include tips or additional sections
  • do NOT tag me or anyone else on your comment

@coderabbitai

coderabbitai Bot commented Jun 15, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

SIZE=S

This was referenced Jun 15, 2026
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