Skip to content

[Task][Infra] Set canonical Product/Firmware version to 1.0.0 #214

Description

@miso-develop

Parent

Owner

  • ACTIVE_ROLE: implementation
  • DOMAIN: infra

State

READY_FOR_REVIEW

Specification baseline

Objective

Prepare the repository's canonical Product/Firmware version for the first stable v1.0.0 release without creating a tag or publishing a Release.

This Task is deliberately limited to:

  1. canonical SemVer reconciliation;
  2. deterministic consistency validation;
  3. package/release-metadata regression coverage.

It does not publish the release.

Required canonical version changes

firmware/CMakeLists.txt

Change:

project(m5authenticator VERSION 0.1.0)

to:

project(m5authenticator VERSION 1.0.0)

firmware/components/m5auth_core/include/m5auth/core/metadata.hpp

Change:

inline constexpr char kFirmwareVersion[] = "0.1.0";

to:

inline constexpr char kFirmwareVersion[] = "1.0.0";

Do not alter the Protocol / Storage / Vault constants.

firmware/release-profile.json

Change:

"firmware_version": "0.1.0"

to:

"firmware_version": "1.0.0"

Preserve:

  • protocol_version: 2
  • storage_schema_version: 2
  • vault_format_version: 1
  • security_profile: encrypted-vault-ram-only-vmk
  • security_profile_version: 1
  • production_release_allowed: true
  • all Flash/layout/security fields.

Deterministic version-consistency validation

Extend the existing release validator rather than creating a separate release-version script.

scripts/validate_release.py must:

  • parse the CMake project(m5authenticator VERSION X.Y.Z) value from firmware/CMakeLists.txt;
  • reject a missing/malformed project version;
  • require it to equal m5auth::core::kFirmwareVersion;
  • require it to equal firmware/release-profile.json["firmware_version"];
  • preserve all existing validation/security checks.

The ordinary:

python scripts/validate_release.py
python scripts/validate_release.py --require-production

paths must both exercise this version consistency check.

Add focused regression coverage that proves divergence fails closed.

Do not introduce a fourth hand-maintained Product/Firmware version constant.

Package/regression expectations

Update/extend the existing release-package test surface so the repository's current production identity is explicitly asserted as 1.0.0.

Candidate packaging from the exact PR head must prove:

  • factory manifest version = 1.0.0;
  • update manifest version = 1.0.0;
  • firmware target version = 1.0.0;
  • release metadata firmware version = 1.0.0;
  • generated binary names carry v1.0.0-<build_commit>;
  • candidate exact_release remains false before a matching tag exists;
  • Protocol / Storage Schema / Vault Format remain 2 / 2 / 1;
  • production eligibility remains true;
  • existing partition/write-plan/security/provenance checks remain unchanged.

Do not create or fake a real v1.0.0 Git tag to make tests pass.

Repository-wide 0.1.0 audit

Before finalizing the PR, audit tracked current files for 0.1.0.

Classify every remaining occurrence as one of:

  • historical release reference;
  • private npm package metadata;
  • test/smoke fixture;
  • another clearly non-canonical synthetic value.

Known non-canonical values that may remain:

  • web/package.json version;
  • root package version entries in web/package-lock.json;
  • web/vite.config.ts QR/layout-smoke fixture;
  • references intentionally describing historical v0.1.0.

Do not mechanically replace all 0.1.0 strings.

If another current production/user-facing canonical version source is discovered, record it on #213 and request Specification clarification if ownership is ambiguous.

README / docs / release notes

No broad README/docs rewrite and no new CHANGELOG are required by this Task.

Only update documentation if the current text falsely identifies 0.1.0 as the current release.

Do not change the current Authorized Release --generate-notes policy.

Non-goals / forbidden actions

Implementation must not:

  • create v1.0.0;
  • move/delete any release tag;
  • call the publish_semver_release repository dispatch;
  • create/draft/publish a GitHub Release;
  • change Protocol / Storage Schema / Vault Format versions;
  • change security profile or production eligibility;
  • change product behavior;
  • change cryptography/Vault/Trusted Browser/recovery/Lock semantics;
  • change partition layout/update behavior;
  • change release authority, permissions, attestation, provenance, Rulesets, immutable Releases, or legacy workflow retirement;
  • change ESP-IDF image tag/digest.

Expected surfaces

Expected production/release-contract files:

  • firmware/CMakeLists.txt
  • firmware/components/m5auth_core/include/m5auth/core/metadata.hpp
  • firmware/release-profile.json
  • scripts/validate_release.py
  • focused release validation/package tests

Avoid unrelated files.

Verification

At exact PR head:

  • all three canonical Product/Firmware sources are exactly 1.0.0;
  • Protocol / Storage / Vault remain exactly 2 / 2 / 1;
  • production eligibility remains true;
  • CMake/metadata/profile mismatch regression fails closed;
  • python scripts/validate_release.py --require-production succeeds;
  • release package tests succeed;
  • candidate package/manifests/metadata report 1.0.0;
  • Foundation succeeds;
  • Security succeeds;
  • repository-wide remaining 0.1.0 occurrences are classified and recorded in PR evidence;
  • no tag/Release was created;
  • diff contains no Product/Protocol/Vault/security behavior change.

Independent Review is mandatory.

Integration boundary

After Review, Integration may merge this preparation PR when normal merge gates are satisfied.

Integration must not create v1.0.0 as part of merging this Task.

After merge:

The release tag and Authorized Release dispatch are a separate irreversible Integration/Human operation.

References

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions