# 1.0.0-beta.24 Package Manifest Identity And Dependency Discipline

## Scope

`1.0.0-beta.24` is a package/workspace discipline hardening slice for local
manifest diagnostics. It tightens how package manifest identity and local
dependency tables are reported when users write ambiguous or invalid manifest
keys.

This release changes diagnostics only. It does not change the Slovo source
language, typed core, runtime behavior, standard-library helper surface,
compiler-known runtime names, package graph semantics, ABI/layout policy, or
artifact/Markdown schema stability guarantees.

## Contract

The beta package model remains a closed local workspace model:

- package manifests declare `[package]` identity metadata and optional
  `[dependencies]` local path records
- dependency keys name local packages and must match the target package name
- dependency paths remain local path records under the existing workspace and
  package boundary checks

The beta24 diagnostic hardening makes these manifest errors explicit:

- duplicate keys in package manifests report `PackageManifestInvalid`
- invalid dependency keys report `InvalidPackageDependencyName`
- duplicate dependency keys report `DuplicatePackageDependencyName`

These diagnostics are part of the beta package/workspace discipline surface.
They do not promote a package manager, resolver, lockfile, registry, publish
flow, or stable package ABI/layout.

## Non-Scope

This scope does not add:

- remote registry behavior
- lockfiles
- semantic-version solving
- package publishing
- optional, dev, target, or feature-gated dependencies
- build scripts or package archives
- stable package ABI/layout
- stable package manager behavior
- source-language syntax or semantics
- runtime behavior or runtime C capabilities
- standard-library helpers or stdlib behavior
- compiler-known `std.*` runtime names
- stable artifact-manifest or Markdown schema guarantees
- performance claims

## Acceptance Criteria

- `docs/language/PACKAGES.md` documents duplicate package-manifest keys,
  invalid dependency keys, and duplicate dependency keys as explicit beta
  diagnostics.
- Language and compiler release notes describe beta24 as package manifest
  identity/dependency diagnostic hardening only.
- Language and compiler roadmaps record beta24 as a local package/workspace
  diagnostics slice with all registry, lockfile, semver, publishing,
  optional/dev/target dependency, ABI/layout, language, runtime, and stdlib
  work deferred.
- README and the post-beta roadmap identify `1.0.0-beta.24` as the current
  package/workspace discipline hardening slice.
- Glagol is versioned as `1.0.0-beta.24`.
- `compiler/tests/package_workspace_discipline_beta24.rs` covers the focused
  package manifest/dependency diagnostics and a positive local dependency
  workspace.
- `scripts/release-gate.sh` runs the focused beta24 test.

## Suggested Gates

```bash
git diff --check
cargo fmt --check
cargo test --test package_workspace_discipline_beta24
```
