Skip to content

fix(install): validate packaged user skill assets - #286

Closed
hyperb1iss wants to merge 1 commit into
mainfrom
nova/release-user-skill-manifest
Closed

hyperb1iss wants to merge 1 commit into
mainfrom
nova/release-user-skill-manifest

Conversation

@hyperb1iss

@hyperb1iss hyperb1iss commented Sep 13, 2026

Copy link
Copy Markdown
Owner

What this changes

The Linux installer accepts the user-facing skill inventory generated by packaging and verifies its required directory and exact file count. Older manifests that omit the field remain compatible.

Why

The package generator includes user_skill_files, but the installer's strict parser did not recognize it. Installation stopped at manifest validation before it could check or stage an otherwise valid bundle.

Verification

  • Added or updated tests: 20 installer payload tests pass, including populated skills, count mismatch, missing root, zero count, null, and legacy manifests.
  • Added or updated docs (not applicable; the package format already contains this field)
  • just verify passes locally (including allocation contracts); just check --locked also passes.
  • just deny passes (not applicable; no dependency or license changes)
  • just ui-test and just ui-build pass (not applicable; no UI source changes)
  • just sdk-lint, just sdk-check, and just sdk-build pass (not applicable; no SDK changes)
  • just python-verify passes (not applicable; no Python changes)
  • just compat-check passes (not applicable; no device database changes)
  • just docs-build passes (not applicable; no documentation changes)
  • cd docs && zola check passes (not applicable; no documentation changes)
  • Packaging scripts were syntax-checked (not applicable; no packaging script changes). The existing release-artifact regression suite passes all five tests.
  • just e2e-build passes with the normal Servo stack (not applicable; no renderer or daemon integration changes)
  • just e2e-build-cpu passes (not applicable; no renderer changes)
  • just e2e passes against the Servo stack (not applicable to manifest parsing)
  • Tested in an Ubuntu 24.04 systemd guest as an ordinary user: the rebuilt archive installs with --no-service, and the installed CLI reports 0.5.1. Service startup and cloud journeys remain separate checks.

Notes for reviewers

The new field remains optional only for older manifests. When present, it must be a positive integer and match the packaged tree. Unknown-field rejection and the existing member, hash, path, and filesystem checks remain in force.

Release archives declare user_skill_files, but the strict Rust installer
rejected that field before bootstrap. Validate its nonzero count and
asset root while retaining manifests from before user skills shipped.

Keep unknown-field rejection and reject null counts, mismatched trees,
and empty declared assets. Cover current and legacy payload validation.

Co-Authored-By: Nova (GPT-6) <noreply@openai.com>
@coderabbitai

coderabbitai Bot commented Sep 13, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

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

@hyperb1iss

Copy link
Copy Markdown
Owner Author

Closing as superseded. The v0.5.1 release commit on main (89951c1) landed this same fix in a more complete form: it carries the user_skill_files field, the require_user_skills split between candidate and installed manifests, and the same three test functions by name. Rebasing this branch onto main left only duplicate tests, so there is nothing left to merge. #287 has been retargeted directly at main.

~ via nova ⚡

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