Skip to content

release: prepare canonical v1.0.0 identity (#214) - #217

Merged
miso-develop merged 11 commits into
mainfrom
task/214
Sep 19, 2026
Merged

miso-develop merged 11 commits into
mainfrom
task/214

Conversation

@miso-develop

@miso-develop miso-develop commented Sep 19, 2026

Copy link
Copy Markdown
Owner

Closes #214
Parent: #213

Scope

  • move the three canonical Product/Firmware SemVer sources from 0.1.0 to 1.0.0
  • extend scripts/validate_release.py to parse and fail closed on the CMake project version
  • require CMake / runtime metadata / release profile firmware versions to agree
  • add deterministic missing/malformed/divergence coverage
  • pin candidate package/manifests/release metadata and firmware filenames to current repository identity 1.0.0
  • mechanically audit all tracked current-file 0.1.0 literals and reject any occurrence outside classified noncanonical sources

Canonical release identity

All three authoritative Product/Firmware sources are now exactly 1.0.0:

  • firmware/CMakeLists.txt
  • firmware/components/m5auth_core/include/m5auth/core/metadata.hpp
  • firmware/release-profile.json

validate_release.py now parses project(m5authenticator VERSION X.Y.Z) directly and requires:

  • exactly a valid X.Y.Z CMake product version;
  • CMake version == runtime kFirmwareVersion;
  • CMake version == release-profile firmware_version.

Missing, malformed, or divergent values fail closed through both normal and --require-production validation paths.

Remaining legacy-version audit

The exact-head tracked-file regression classifies every remaining 0.1.0 occurrence as noncanonical:

  • private npm package metadata
    • web/package.json
    • web/package-lock.json
  • historical compatibility references
    • firmware/components/m5auth_vault/include/m5auth/vault.hpp
    • tests/vault_interop_test.cpp
  • test/smoke fixtures
    • web/vite.config.ts
    • web/src/build-identity.test.ts
    • web/src/canonical-management-lock-privacy.test.ts
    • web/src/canonical-management-rekey.test.ts
    • web/src/canonical-management.e2e.test.ts
    • web/src/canonical-protocol-v2.test.ts
    • web/src/canonical-recovery-reset.test.ts
    • web/src/canonical-reset-cleanup-recovery.test.ts
    • web/src/canonical-transaction-recovery.test.ts
    • web/src/firmware-update.test.ts
    • web/src/management.test.ts
    • web/src/protocol.test.ts
    • web/src/serial.test.ts
    • web/tests/browser/auto-lock-context-smoke.ts

No remaining tracked production/current canonical source asserts 0.1.0.

Compatibility boundary

Unchanged:

  • Protocol = 2
  • Storage Schema = 2
  • Vault Format = 1
  • security profile = encrypted-vault-ram-only-vmk / v1
  • production_release_allowed = true
  • Flash/update layout and persistence/security contracts
  • ESP-IDF image identity
  • Authorized Release privilege/provenance/attestation design

No Product behavior, crypto, Vault, Trusted Browser, recovery, Lock, tag Ruleset, immutable-Release, or release-authority change is included.

Exact-head verification

HEAD: 91d89ff440fff3e1ebbe0099244710ccbd425711

  • Security #943: SUCCESS
  • Foundation #940: SUCCESS
    • Web: SUCCESS
    • Windows Chrome QR: SUCCESS
    • firmware: SUCCESS
    • python scripts/validate_release.py --require-production produced:
      M5StickS3 v1.0.0 protocol=2 storage=2 vault=1 security=encrypted-vault-ram-only-vmk/v1 eligibility=production-eligible
    • release/package regression suite: SUCCESS, including 16 release-package tests
    • isolated ESP-IDF build: SUCCESS
    • CI-built distribution package validation: SUCCESS
    • generated real candidate binaries use m5authenticator-v1.0.0-<build_commit>-...
    • ESP-IDF dependency lock unchanged
  • Issue 117 Screen Snapshot [Task][Web] Preserve unlock across page lifecycle and auto-sync PC time when needed #196: SUCCESS
    • diagnostics-ON ESP-IDF build and dependency-lock verification passed
  • current main: bc5c3b90f57952f04a80c8ddfcb55b6d384c882e
  • branch: behind 0, mergeable
  • effective diff: exactly five release/version-contract files
  • no other open PR owns this surface
  • refs/tags/v1.0.0: absent (404)
  • GitHub Release v1.0.0: absent (404)

No protected tag was created and no Release/repository dispatch was performed.

Integration boundary

After independent Review, Integration may merge this preparation change under normal gates but must not create v1.0.0 as part of merging #214.

After integration, return to #213 and re-read the exact merged main state. Under the revised sequencing, #216 becomes implementation-ready only after #214 integration; protected v1.0.0 creation remains a later Human/Integration operation.

Review rework

Review finding at prior HEAD 91d89ff440fff3e1ebbe0099244710ccbd425711 identified that the CMake VERSION parser could accept a non-X.Y.Z token by matching only an X.Y.Z prefix.

Fixed at exact HEAD f50a6930cc4824c1ae382053438f0f06363b1873:

  • parser now captures the complete non-whitespace VERSION token after VERSION;
  • parser then requires re.fullmatch(r"[0-9]+\.[0-9]+\.[0-9]+", token);
  • 1.0.0.1 is rejected;
  • 1.0.0-beta is rejected;
  • existing missing VERSION, two-component 1.0, wrong project-name, and source-divergence coverage remains;
  • both normal validation and require_production=True paths deterministically reject the malformed tokens.

Exact-head rework evidence:

  • Security #944: SUCCESS
  • Foundation #941: SUCCESS
    • Web: SUCCESS
    • Windows Chrome QR: SUCCESS
    • firmware: SUCCESS
    • release validation: M5StickS3 v1.0.0 protocol=2 storage=2 vault=1 security=encrypted-vault-ram-only-vmk/v1 eligibility=production-eligible
    • release-package regression suite: 17 tests passed
    • isolated ESP-IDF build: SUCCESS
    • distribution package validation: SUCCESS
    • candidate binaries remain m5authenticator-v1.0.0-<build_commit>-...
    • dependency lock verification: SUCCESS
  • Issue 117 Screen Snapshot feat(web): preserve unlock and auto-sync PC time (#196) #197: SUCCESS
  • current main: bc5c3b90f57952f04a80c8ddfcb55b6d384c882e
  • branch: behind 0, mergeable
  • effective diff remains limited to the same five release/version-contract files
  • PR release: prepare canonical v1.0.0 identity (#214) #217 remains the only open PR
  • v1.0.0 tag remains absent
  • GitHub Release v1.0.0 remains absent

No unrelated implementation change, tag creation, Release publication, or repository dispatch was performed.

Second Review rework

Re-review finding at prior HEAD f50a6930cc4824c1ae382053438f0f06363b1873 identified that raw-source search could let commented or quoted example text mask the actual active CMake project declaration.

Fixed at exact HEAD 855679f5da8ef4379d8ef00ed56f0bb8b65ae971:

  • CMake inactive text is sanitized before locating the canonical project declaration;
  • line comments are ignored;
  • bracket comments are ignored;
  • quoted strings are ignored;
  • bracket arguments are ignored;
  • inactive text preserves newlines/spacing sufficiently for deterministic declaration matching;
  • exactly one active project(m5authenticator ...) declaration is required;
  • the complete VERSION token must still full-match exact X.Y.Z;
  • the prior 1.0.0.1 / 1.0.0-beta fail-closed boundary remains intact.

Focused regressions cover, through both normal and require_production=True validation paths:

  • commented valid 1.0.0 preceding active malformed 1.0.0.1;
  • commented valid 1.0.0 preceding active divergent 9.9.9;
  • quoted example project(... 1.0.0) preceding active divergent 9.9.9;
  • bracket-comment example preceding active divergent version;
  • bracket-argument example preceding active divergent version.

Exact-head evidence:

  • Security #946: SUCCESS
  • Foundation #943: SUCCESS
    • Web: SUCCESS
    • Windows Chrome QR: SUCCESS
    • firmware: SUCCESS
    • release validation: M5StickS3 v1.0.0 protocol=2 storage=2 vault=1 security=encrypted-vault-ram-only-vmk/v1 eligibility=production-eligible
    • release/package regression suite: 18 tests passed
    • isolated ESP-IDF build: SUCCESS
    • distribution package validation: SUCCESS
    • candidate binaries remain m5authenticator-v1.0.0-<build_commit>-...
    • dependency-lock verification: SUCCESS
  • Issue 117 Screen Snapshot [Decision][Release] Move production publication authority off tag-push workflow definitions #199: SUCCESS
  • current main: bc5c3b90f57952f04a80c8ddfcb55b6d384c882e
  • branch: behind 0, mergeable
  • effective diff remains the same five release/version-contract files
  • PR release: prepare canonical v1.0.0 identity (#214) #217 remains the only open PR
  • v1.0.0 tag remains absent
  • GitHub Release v1.0.0 remains absent

No unrelated implementation change, tag creation, Release publication, repository dispatch, or merge was performed.

@miso-develop
miso-develop marked this pull request as ready for review September 19, 2026 09:56

Copy link
Copy Markdown
Owner Author

Implementation for #214 is complete at exact HEAD 91d89ff440fff3e1ebbe0099244710ccbd425711.

Exact-head evidence:

  • Security #943: SUCCESS.
  • Foundation #940: SUCCESS across Web, Windows Chrome, firmware, isolated ESP-IDF build, distribution package validation, and dependency-lock verification.
  • Issue 117 Screen Snapshot [Task][Web] Preserve unlock across page lifecycle and auto-sync PC time when needed #196: SUCCESS.
  • production release validation reports M5StickS3 v1.0.0 protocol=2 storage=2 vault=1 security=encrypted-vault-ram-only-vmk/v1 eligibility=production-eligible.
  • CI produced real candidate firmware names using m5authenticator-v1.0.0-<build_commit>-....
  • tracked legacy-version audit passes and leaves 0.1.0 only in the noncanonical npm metadata, historical compatibility comments, and test/smoke fixtures enumerated in the PR body.
  • current main remains bc5c3b90f57952f04a80c8ddfcb55b6d384c882e; branch behind 0; PR mergeable; no overlapping open PR.
  • v1.0.0 tag and Release remain absent.

No tag creation, release publication, repository dispatch, Product/Protocol/Vault behavior change, or release-authority change was performed.

Copy link
Copy Markdown
Owner Author

HANDOFF
FROM: implementation
TO: review
DOMAIN: infra
ISSUE: #214
PR: #217
HEAD: 91d89ff
STATE: READY_FOR_REVIEW

@miso-develop miso-develop left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review disposition: REWORK_REQUIRED

Reviewed exact PR head 91d89ff440fff3e1ebbe0099244710ccbd425711 against Issue #214 and parent release-preparation contract #213.

One blocking fail-closed finding identified.

Blocking finding — CMake version parser accepts non-X.Y.Z values by truncation

scripts/validate_release.py::parse_cmake_project_version() currently extracts the version with:

re.findall(
    r"\bVERSION\s+([0-9]+\.[0-9]+\.[0-9]+)\b",
    project.group("body"),
    re.IGNORECASE,
)

This does not validate the complete VERSION token. It accepts a longer/nonconforming token by matching only its first three numeric components.

Concrete reproduction against the exact implementation logic:

  • project(m5authenticator VERSION 1.0.0.1)
  • parser result: "1.0.0"
  • if kFirmwareVersion and release-profile firmware_version are both 1.0.0, validate_release() therefore passes the newly-added consistency checks even though the CMake project VERSION is not the required exact X.Y.Z value.

The same boundary also permits suffix-like input such as VERSION 1.0.0-beta to be extracted as 1.0.0.

This violates #214's explicit requirements:

  • parse project(m5authenticator VERSION X.Y.Z);
  • reject a missing/malformed project version;
  • require the actual CMake Product/Firmware version to equal metadata/profile;
  • fail closed on divergence/malformed values.

Current focused malformed tests cover missing VERSION, two-component 1.0, and a different project name, but do not cover an extra fourth component or suffix/trailing-token case, so this regression remains undetected.

Required completion condition:

  • validate the complete CMake VERSION token as the required exact three-component Product/Firmware version rather than accepting a matching prefix;
  • add deterministic regression coverage proving a non-X.Y.Z token such as 1.0.0.1 is rejected;
  • retain the existing missing/malformed/divergence tests and both normal / --require-production validation paths.

No unrelated implementation change is required.

Other reviewed areas

The remaining #214 implementation is consistent with the current contract:

  • canonical sources are changed to 1.0.0 in exactly:
    • firmware/CMakeLists.txt;
    • firmware/components/m5auth_core/include/m5auth/core/metadata.hpp;
    • firmware/release-profile.json;
  • Protocol / Storage Schema / Vault Format remain exactly 2 / 2 / 1;
  • security profile remains encrypted-vault-ram-only-vmk / v1;
  • production_release_allowed remains true;
  • package regressions explicitly assert factory/update/target/release-metadata version 1.0.0 and v1.0.0-prefixed binary names;
  • tracked 0.1.0 audit is bounded to classified npm metadata, historical compatibility comments, and test/smoke fixtures;
  • no release authority, tag ruleset, immutable-release, ESP-IDF identity, Product behavior, Protocol, Vault, crypto, persistence, recovery, or Lock semantics changed.

Exact-head automated evidence is otherwise green:

  • Foundation #940: SUCCESS.
    • release validation prints M5StickS3 v1.0.0 protocol=2 storage=2 vault=1 security=encrypted-vault-ram-only-vmk/v1 eligibility=production-eligible;
    • release package suite: 16 tests passed;
    • Web, Windows Chrome, firmware, isolated ESP-IDF build/package validation, and dependency-lock verification succeeded.
  • Security #943: SUCCESS.
  • Issue 117 Screen Snapshot #196: SUCCESS.
  • refs/tags/v1.0.0: absent (GitHub ref lookup 404).
  • GitHub Release v1.0.0: absent (release lookup 404).

Staleness/collision:

  • Handoff HEAD matches current PR HEAD.
  • PR is open, non-draft, mergeable.
  • Current main remains exact PR base bc5c3b90f57952f04a80c8ddfcb55b6d384c882e.
  • Effective diff is limited to the five expected release/version-contract files.
  • PR #217 is the only open PR at final Review check.

#214 must not advance to Integration until the parser boundary above is corrected and re-reviewed on the new exact HEAD. No tag or Release operation belongs in this rework.

Copy link
Copy Markdown
Owner Author

HANDOFF
FROM: review
TO: implementation
DOMAIN: infra
ISSUE: #214
PR: #217
HEAD: 91d89ff
STATE: REWORK_REQUIRED

@miso-develop
miso-develop marked this pull request as draft September 19, 2026 10:07
@miso-develop
miso-develop marked this pull request as ready for review September 19, 2026 10:21

Copy link
Copy Markdown
Owner Author

Review rework for #214 is complete at exact HEAD f50a6930cc4824c1ae382053438f0f06363b1873.

Blocking finding resolved:

  • CMake Product/Firmware VERSION parsing now validates the complete VERSION token, not an X.Y.Z prefix.
  • 1.0.0.1 and 1.0.0-beta are both rejected.
  • regressions cover parser-level rejection plus both normal and require_production=True validation paths.
  • existing missing/two-component/wrong-project/divergence coverage remains.

Exact-head evidence:

  • Security #944: SUCCESS.
  • Foundation #941: SUCCESS.
    • release/package regression suite: 17 tests passed.
    • production validation reports M5StickS3 v1.0.0 protocol=2 storage=2 vault=1 security=encrypted-vault-ram-only-vmk/v1 eligibility=production-eligible.
    • isolated ESP-IDF build and distribution package validation succeeded.
  • Issue 117 Screen Snapshot feat(web): preserve unlock and auto-sync PC time (#196) #197: SUCCESS.
  • current main remains bc5c3b90f57952f04a80c8ddfcb55b6d384c882e; branch behind 0; PR mergeable.
  • effective diff remains the same five release/version-contract files.
  • PR release: prepare canonical v1.0.0 identity (#214) #217 is the only open PR.
  • v1.0.0 tag and GitHub Release remain absent.

No unrelated change, tag creation, release publication, repository dispatch, or merge was performed.

Copy link
Copy Markdown
Owner Author

HANDOFF
FROM: implementation
TO: review
DOMAIN: infra
ISSUE: #214
PR: #217
HEAD: f50a693
STATE: READY_FOR_REVIEW

@miso-develop miso-develop left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review disposition: REWORK_REQUIRED

Re-reviewed exact PR head f50a6930cc4824c1ae382053438f0f06363b1873 against Issue #214 and parent #213.

The prior blocking finding is partially resolved:

  • complete VERSION token is now captured;
  • 1.0.0.1 is rejected when it is the matched project VERSION;
  • 1.0.0-beta is rejected when it is the matched project VERSION;
  • focused tests cover those malformed tokens through parser-level and both normal/require_production=True validation paths.

However, one fail-closed parser bypass remains and is blocking.

Blocking finding — commented/string-literal project text can mask the actual CMake project VERSION

parse_cmake_project_version() still locates the project declaration with:

re.search(
    r"project\s*\(\s*m5authenticator\b(?P<body>[^)]*)\)",
    source,
    re.IGNORECASE | re.DOTALL,
)

This search operates on raw CMake source and does not exclude comments or quoted strings. It therefore returns the first textual project(m5authenticator ...) match even when that text is not an active CMake command.

Concrete reproductions against the exact-head parser:

# project(m5authenticator VERSION 1.0.0)
project(m5authenticator VERSION 1.0.0.1)

Current parser result: 1.0.0.

Likewise:

# project(m5authenticator VERSION 1.0.0)
project(m5authenticator VERSION 9.9.9)

Current parser result: 1.0.0.

A quoted/example string before the real declaration has the same masking effect, e.g.:

set(EXAMPLE "project(m5authenticator VERSION 1.0.0)")
project(m5authenticator VERSION 9.9.9)

Current parser result: 1.0.0.

If metadata/profile remain 1.0.0, the newly-added release consistency gate therefore passes despite the actual active CMake Product/Firmware VERSION being malformed or divergent.

This still violates #214's core deterministic requirements:

  • parse the actual project(m5authenticator VERSION X.Y.Z) value;
  • reject malformed/missing project version;
  • require actual CMake Product/Firmware VERSION to equal metadata/profile;
  • fail closed on divergence.

Required completion condition:

  • ensure inactive/comment/example text cannot satisfy or mask the canonical CMake project declaration;
  • add a focused regression in which a commented valid 1.0.0 declaration precedes an active malformed/divergent project declaration and verify rejection;
  • preserve the newly-added complete-token checks for 1.0.0.1 and 1.0.0-beta;
  • preserve both normal and production-required validation paths.

No broader CMake parser is required if a narrower deterministic implementation can unambiguously identify the active canonical declaration for the repository contract.

Other re-review results

All other previously reviewed #214 areas remain acceptable:

  • the three canonical Product/Firmware sources are exactly 1.0.0;
  • Protocol / Storage Schema / Vault Format remain 2 / 2 / 1;
  • security profile and production eligibility are unchanged;
  • release/package tests explicitly assert v1.0.0 manifests, metadata, target version, and filenames;
  • tracked 0.1.0 audit remains bounded to classified noncanonical sources;
  • no tag, Release, repository dispatch, release-authority, Ruleset, immutable-Release, ESP-IDF identity, Product behavior, crypto, Vault, recovery, or Lock behavior changed.

Exact-head automated evidence:

  • Security #944: SUCCESS.
  • Foundation #941: SUCCESS.
    • release validation reports M5StickS3 v1.0.0 protocol=2 storage=2 vault=1 security=encrypted-vault-ram-only-vmk/v1 eligibility=production-eligible;
    • release package suite: 17 tests passed;
    • isolated ESP-IDF build and distribution-package validation succeeded;
    • generated candidate binaries remain v1.0.0-prefixed.
  • Issue 117 Screen Snapshot #197: SUCCESS.
  • refs/tags/v1.0.0: absent.
  • GitHub Release v1.0.0: absent.

Staleness/collision:

  • Handoff HEAD matches current PR HEAD.
  • PR is open, non-draft, mergeable.
  • Current main remains exact PR base bc5c3b90f57952f04a80c8ddfcb55b6d384c882e.
  • Rework delta from the prior reviewed HEAD changes only scripts/validate_release.py and tests/release_package_test.py.
  • Effective PR diff remains the same five expected release/version-contract files.
  • PR #217 is the only open PR at final check.

#214 remains REWORK_REQUIRED until this active-declaration masking boundary is fixed and re-reviewed on a new exact HEAD. No tag or Release operation belongs in this rework.

Copy link
Copy Markdown
Owner Author

HANDOFF
FROM: review
TO: implementation
DOMAIN: infra
ISSUE: #214
PR: #217
HEAD: f50a693
STATE: REWORK_REQUIRED

@miso-develop
miso-develop marked this pull request as draft September 19, 2026 10:42
@miso-develop
miso-develop marked this pull request as ready for review September 19, 2026 10:48

Copy link
Copy Markdown
Owner Author

Second Review rework for #214 is complete at exact HEAD 855679f5da8ef4379d8ef00ed56f0bb8b65ae971.

Blocking finding resolved:

  • commented or quoted CMake example text can no longer mask the active Product/Firmware project declaration;
  • line comments, bracket comments, quoted strings, and bracket arguments are sanitized before canonical declaration matching;
  • exactly one active project(m5authenticator ...) declaration is required;
  • complete VERSION token still must full-match exact X.Y.Z;
  • prior 1.0.0.1 / 1.0.0-beta rejection remains.

Focused regression coverage verifies both normal and require_production=True paths reject:

  • commented valid declaration followed by active malformed 1.0.0.1;
  • commented valid declaration followed by active divergent 9.9.9;
  • quoted example followed by active divergent version;
  • bracket-comment and bracket-argument examples followed by active divergent version.

Exact-head evidence:

No unrelated change, tag creation, release publication, repository dispatch, or merge was performed.

Copy link
Copy Markdown
Owner Author

HANDOFF
FROM: implementation
TO: review
DOMAIN: infra
ISSUE: #214
PR: #217
HEAD: 855679f
STATE: READY_FOR_REVIEW

@miso-develop miso-develop left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review disposition: READY_FOR_INTEGRATION

Re-reviewed exact PR head 855679f5da8ef4379d8ef00ed56f0bb8b65ae971 against Issue #214 and parent release-preparation contract #213.

No blocking finding remains.

Resolution of prior Review findings

The two prior fail-closed parser findings are resolved.

  1. Complete VERSION token validation
  • parse_cmake_project_version() no longer accepts only an X.Y.Z prefix.
  • It captures the complete non-whitespace VERSION token and requires:
    re.fullmatch(r"[0-9]+\.[0-9]+\.[0-9]+", version).
  • 1.0.0.1 is rejected.
  • 1.0.0-beta is rejected.
  • Regression coverage exercises both parser-level rejection and both normal / require_production=True validation paths.
  1. Inactive CMake text masking
  • CMake source is sanitized before canonical project matching.
  • Line comments are excluded.
  • Bracket comments are excluded.
  • Quoted strings are excluded.
  • Bracket arguments are excluded.
  • Newlines/spacing are preserved so active-command matching remains deterministic.
  • The parser requires exactly one active line-rooted project(m5authenticator ...) declaration.
  • Commented/quoted/bracketed example text therefore cannot satisfy or mask the canonical declaration.
  • Focused regressions verify rejection when inactive valid 1.0.0 examples precede:
    • active malformed 1.0.0.1;
    • active divergent 9.9.9;
    • equivalent quoted/bracket-comment/bracket-argument masking cases.
  • These regressions run through both normal and production-required validation paths.

The resulting parser remains intentionally narrow to the repository's canonical CMake contract rather than attempting to interpret arbitrary dynamic CMake evaluation, which is appropriate for this deterministic release guard.

Canonical version / compatibility contract

Verified at this exact HEAD:

  • firmware/CMakeLists.txt: Product/Firmware VERSION = 1.0.0.
  • firmware/components/m5auth_core/include/m5auth/core/metadata.hpp: kFirmwareVersion = "1.0.0".
  • firmware/release-profile.json: firmware_version = "1.0.0".
  • Protocol remains 2.
  • Storage Schema remains 2.
  • Vault Format remains 1.
  • security profile remains encrypted-vault-ram-only-vmk / v1.
  • production_release_allowed remains true.
  • No fourth hand-maintained canonical Product/Firmware version source was introduced.

The validator now requires CMake / runtime metadata / release profile firmware versions to agree while preserving all existing release/security checks.

Package / release metadata verification

Focused release-package coverage verifies:

  • 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;
  • Protocol / Storage / Vault remain 2 / 2 / 1;
  • pre-tag candidate exact_release remains false;
  • generated candidate binaries use the required m5authenticator-v1.0.0-<build_commit>-... identity;
  • existing partition/write-plan/security/package checks remain intact.

Exact-head Foundation firmware log confirms:

  • release validation OK:
    M5StickS3 v1.0.0 protocol=2 storage=2 vault=1 security=encrypted-vault-ram-only-vmk/v1 eligibility=production-eligible;
  • release/package regression suite: 18 tests passed;
  • actual generated candidate filenames are v1.0.0-prefixed;
  • isolated ESP-IDF build/package validation and dependency-lock verification succeeded.

Remaining 0.1.0 audit

The repository-wide tracked-file regression continues to fail closed on unexpected current 0.1.0 literals.

Remaining occurrences are restricted to the explicitly classified noncanonical categories:

  • private npm package metadata;
  • historical compatibility references;
  • test/smoke fixtures.

No remaining current production/user-facing canonical Product/Firmware source asserts 0.1.0.

Security / release authority boundary

No Product behavior, Protocol vocabulary, Storage Schema, Vault Format/migration behavior, cryptography, Trusted Browser, recovery, Lock semantics, Flash/update layout, ESP-IDF identity, production eligibility, release-authority, provenance/attestation, tag Ruleset, immutable-Release, or legacy-workflow-retirement behavior is changed by this PR.

Exact-head checks:

  • Security #946: SUCCESS.
  • Foundation #943: SUCCESS.
  • Issue 117 Screen Snapshot #199: SUCCESS.
  • refs/tags/v1.0.0: absent (GitHub ref lookup 404).
  • GitHub Release v1.0.0: absent (release lookup 404).

No tag creation, Release publication, or publish_semver_release dispatch occurred.

Staleness / collision

  • Handoff HEAD matches current PR HEAD.
  • PR #217 is open, non-draft, and mergeable.
  • Current main remains exact PR base bc5c3b90f57952f04a80c8ddfcb55b6d384c882e.
  • Rework from the previous reviewed HEAD changes only scripts/validate_release.py and tests/release_package_test.py.
  • Effective PR diff remains exactly the same five expected release/version-contract files.
  • PR #217 is the only open PR at final Review check.

Integration boundary

#214 is ready for Integration.

Integration may merge this preparation PR under normal gates but must not create v1.0.0 as part of merging #214.

After #214 integration:

  • return to parent #213;
  • re-read exact current main;
  • #216 becomes the next dependency;
  • protected v1.0.0 creation remains a later explicit Human/Integration operation only after #216, manual candidate Pages validation, and the complete #213 exact pre-tag gate.

No additional Security-role review or Human Gate is required for #214 itself.

Copy link
Copy Markdown
Owner Author

HANDOFF
FROM: review
TO: integration
ISSUE: #214
PR: #217
HEAD: 855679f
STATE: READY_FOR_INTEGRATION

Copy link
Copy Markdown
Owner Author

READY_TO_MERGE

HEAD: 855679f5da8ef4379d8ef00ed56f0bb8b65ae971
Current main / PR base: bc5c3b90f57952f04a80c8ddfcb55b6d384c882e

Integration reconstruction:

STATE: READY_TO_MERGE

@miso-develop
miso-develop merged commit 49de696 into main Sep 19, 2026
5 checks passed
@miso-develop
miso-develop deleted the task/214 branch September 19, 2026 11:20

Copy link
Copy Markdown
Owner Author

INTEGRATED

PR: #217
Pre-merge HEAD: 855679f5da8ef4379d8ef00ed56f0bb8b65ae971
Squash merge commit / current main: 49de696f3a75a1afa100606bce2b072ec5148c98

Integration evidence:

STATE: INTEGRATED

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.

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

1 participant