Skip to content

Establish safe Niriland phase one foundation - #2

Draft
Furyfree wants to merge 4 commits into
mainfrom
maintenance/phase-1-foundation
Draft

Establish safe Niriland phase one foundation#2
Furyfree wants to merge 4 commits into
mainfrom
maintenance/phase-1-foundation

Conversation

@Furyfree

@Furyfree Furyfree commented Aug 24, 2026

Copy link
Copy Markdown
Owner

Summary

  • establish strict machine/profile contracts with read-only niriland plan and niriland status
  • make curl bootstraps create or preserve machine.local.conf, validate the selected profile, and require confirmation before installation
  • organize public commands under bin/, private command code under src/niriland/, and the active fresh-install flow under installer/
  • replace configs/base/ and configs/modules/ with the explicit configs/home/, configs/shared/, and configs/system/ ownership model
  • add migration receipt and bounded sudo-session foundations with rootless regression tests
  • reject malformed package-set lists, including leading, trailing, and repeated commas
  • disable the unsafe fingerprint PAM/package mutation helper while retaining a read-only compatibility status command
  • reconcile the roadmap and document the rewrite plan, research, active installer boundary, and new repository layout

Validation

  • Bash syntax checks passed across commands, installer code, migrations, and tests
  • ShellCheck passed with source-path resolution enabled
  • 49 rootless tests passed
  • niriland plan, plan --prune, and status passed without mutation
  • Niri config validated through the new shared-config path
  • Zsh, strict JSON, desktop entry, certificate, Minecraft archive, Markdown, stale-path, and diff checks passed
  • the existing hosted Codex finding is fixed and covered by migration-state tests
  • approved local review findings are fixed and covered by bootstrap, deploy, tool-link, parser, fingerprint, and sudo-session tests

Safety

No installer, package transaction, sudo command, service mutation, migration apply, live config deployment, reboot, suspend, or hibernation action was run. Mutating commands in the new CLI remain explicitly disabled for Phase 1. The active installer is preserved under installer/ until niriland apply can replace it without removing fresh-install support.

@Furyfree

Copy link
Copy Markdown
Owner Author

@codex review

@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: 882d3e5152

ℹ️ 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 niriland Outdated
printf 'Package sets: %s\n' "$package_sets"
printf 'State root: %s%s\n' "$state_root" \
"$([[ -d "$state_root" ]] && printf ' (present)' || printf ' (not created)')"
printf 'Discovered migrations: %d\n' "${#NIRILAND_MIGRATION_IDS[@]}"

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 Report receipt states in status

When migration receipts exist—especially invalid or source-mismatched ones—status only reports the number of discovered scripts and never calls niriland_migration_receipt_status, so it produces identical output for pending, completed, and blocked receipt states. This contradicts the documented status receipt overview in plan.md:235 and hides migration-state problems unless the user separately runs plan; summarize each receipt state here rather than only counting migration files.

Useful? React with 👍 / 👎.

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