Skip to content

0.2.0.1 Promotion (#545) - #552

Merged
mberrys merged 33 commits into
stablefrom
unstable
Sep 10, 2026
Merged

0.2.0.1 Promotion (#545)#552
mberrys merged 33 commits into
stablefrom
unstable

Conversation

@mberrys

@mberrys mberrys commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

mberrys and others added 30 commits September 6, 2026 16:42
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…lding

Co-authored-by: Cursor <cursoragent@cursor.com>
## Summary

Land Session 09 Phase 5 ledger closeout on `dev`. PR #534 merged to
`stable` only; qualification lanes 10–13 require Session 09 on the
integration line.

## Commits

- `1c3f9d6d` — terminalize ledgers and freeze deletion evidence
- `0c8947c1` — record ledger-closeout SHA
- `cc8ad6b3` — document stable merge vs dev backport prerequisite

## Candidate SHA

After merge, `dev` qualification baseline becomes `cc8ad6b3` (or the
merge commit if squashed).

## Test plan

- [ ] Hosted CI green on this PR
- [ ] Phase 5 verifier stack from `docs/SESSION_09_HANDOFF.md`

<!-- codesmith:footer -->
---
<a
href="https://app.blacksmith.sh/studio-berry/codesmith/loop/pr/535"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-light-v2.svg"><img
alt="View with [code]smith"
src="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg"></picture></a>
<a
href="https://backend.blacksmith.sh/track/enable-autofix?expires=1791330185&installation_model_id=435800&pr_number=535&repository=studio-berry%2Floop&return_to=https%3A%2F%2Fgithub.com%2Fstudio-berry%2Floop%2Fpull%2F535&signature=59c493d4587f27982d204e03d7233bf08e20b850503fac9177a4029b74a84005"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-light.svg"><img
alt="Autofix with [code]smith"
src="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"></picture></a>
<sup>Need help on this PR? Tag <code>@codesmith-bot</code> with what you
need. Autofix is disabled.</sup>

<!-- codesmith:autofix:disabled -->
<!-- /codesmith:footer -->
#538)

Session 13 scaffolding for P-02. Gates remain open until hosted package
builds on candidate SHA. Depends on Session 09 backport #535.

Made with [Cursor](https://cursor.com)

<!-- codesmith:footer -->
---
<a
href="https://app.blacksmith.sh/studio-berry/codesmith/loop/pr/538"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-light-v2.svg"><img
alt="View with [code]smith"
src="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg"></picture></a>
<a
href="https://backend.blacksmith.sh/track/enable-autofix?expires=1791330612&installation_model_id=435800&pr_number=538&repository=studio-berry%2Floop&return_to=https%3A%2F%2Fgithub.com%2Fstudio-berry%2Floop%2Fpull%2F538&signature=a21ef11a6f1c6e7aeb4239c1e5761bdd5b130c146ff58acabb8c3be87db974db"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-light.svg"><img
alt="Autofix with [code]smith"
src="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"></picture></a>
<sup>Need help on this PR? Tag <code>@codesmith-bot</code> with what you
need. Autofix is disabled.</sup>

<!-- codesmith:autofix:disabled -->
<!-- /codesmith:footer -->
Lands Session 13 scaffolding (#538) on dev after Session 09 backport
(#535).

Made with [Cursor](https://cursor.com)

<!-- codesmith:footer -->
---
<a
href="https://app.blacksmith.sh/studio-berry/codesmith/loop/pr/539"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-light-v2.svg"><img
alt="View with [code]smith"
src="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg"></picture></a>
<a
href="https://backend.blacksmith.sh/track/enable-autofix?expires=1791331135&installation_model_id=435800&pr_number=539&repository=studio-berry%2Floop&return_to=https%3A%2F%2Fgithub.com%2Fstudio-berry%2Floop%2Fpull%2F539&signature=45eb64cabdb73eeb52ebf22de9bddd5bc1a71a3a34b6f753a70fc703d06905f8"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-light.svg"><img
alt="Autofix with [code]smith"
src="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"></picture></a>
<sup>Need help on this PR? Tag <code>@codesmith-bot</code> with what you
need. Autofix is disabled.</sup>

<!-- codesmith:autofix:disabled -->
<!-- /codesmith:footer -->
Co-authored-by: Cursor <cursoragent@cursor.com>
Records Session 09 (#535) and Session 13 (#539) on dev and links
in-flight package workflow runs.

Made with [Cursor](https://cursor.com)

<!-- codesmith:footer -->
---
<a
href="https://app.blacksmith.sh/studio-berry/codesmith/loop/pr/540"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-light-v2.svg"><img
alt="View with [code]smith"
src="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg"></picture></a>
<a
href="https://backend.blacksmith.sh/track/enable-autofix?expires=1791331199&installation_model_id=435800&pr_number=540&repository=studio-berry%2Floop&return_to=https%3A%2F%2Fgithub.com%2Fstudio-berry%2Floop%2Fpull%2F540&signature=35b17bc27932233dea3e20174c1f90c1baa56548370af13a5b9e3961a00932cc"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-light.svg"><img
alt="Autofix with [code]smith"
src="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"></picture></a>
<sup>Need help on this PR? Tag <code>@codesmith-bot</code> with what you
need. Autofix is disabled.</sup>

<!-- codesmith:autofix:disabled -->
<!-- /codesmith:footer -->
…ffolding

Co-authored-by: Cursor <cursoragent@cursor.com>
…olding

Co-authored-by: Cursor <cursoragent@cursor.com>
…scaffolding

Co-authored-by: Cursor <cursoragent@cursor.com>
… amendment)

Per the canonical Notion Roadmap amendment of 2026-09-06:
- 0.6.0 absorbs the former 0.7.0 (production outcome reconciliation)
- 0.7.0 absorbs the former 0.9.0 (workflow promotion & verified repeat automation)
- former 0.10.0 renumbers to 0.8.0; GitHub milestones 15/16 retired (alias convention)
- ceremony sessions folded into owning sessions (S00 reconcile, verticals, lanes)
- 0.5.0 absorbs 0.4.0-B plan-compiler track and 0.2.1 scheduler
- 0.8.0 absorbs 0.4.0-A operator-help content, SBOM, distribution deferrals,
  and the 0.3.0 application-quality carryover register

Roadmap doc renamed to ROADMAP_0.5.0-0.8.0.md; milestone descriptors, manifest
retire entries, and README sequence table updated; sync pipeline verified
(7/7 unit tests, dry-run, apply, idempotent).
Keep Windows_MSI and Linux_AppImage as workflow_dispatch-only exact-SHA
qualification. PRs targeting dev already run ci.yml; full installer
builds belong on the release-candidate path.

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
Session 10 lane (Issues 31-33). T-01/T-02 candidate; T-03 partial until
hosted qpdf/pdfsig/verapdf.

Made with [Cursor](https://cursor.com)

<!-- codesmith:footer -->
---
<a
href="https://app.blacksmith.sh/studio-berry/codesmith/loop/pr/541"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-light-v2.svg"><img
alt="View with [code]smith"
src="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg"></picture></a>
<a
href="https://backend.blacksmith.sh/track/enable-autofix?expires=1791331344&installation_model_id=435800&pr_number=541&repository=studio-berry%2Floop&return_to=https%3A%2F%2Fgithub.com%2Fstudio-berry%2Floop%2Fpull%2F541&signature=4737cdc0e08fd83dfced7298f5c265bdb9c83ee8c003db8cf9427a187fea83be"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-light.svg"><img
alt="Autofix with [code]smith"
src="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"></picture></a>
<sup>Need help on this PR? Tag <code>@codesmith-bot</code> with what you
need. Autofix is disabled.</sup>

<!-- codesmith:autofix:disabled -->
<!-- /codesmith:footer -->
Running 'python3 scripts/qualification/validate_resource_envelope_evidence.py'
as a file puts scripts/qualification on sys.path instead of the repo root, so
the cross-package import 'from scripts.resource_envelope.run_matrix import
FIXTURE_SPECS' raised ModuleNotFoundError: No module named 'scripts' in the
agent-fast 'Verify resource-envelope contracts' step (unittest invocations via
python -m were unaffected).

Insert the repo root into sys.path before the import in
validate_resource_envelope_evidence.py, and apply the same shim to
create_fixture_manifest.py, which carries the identical latent flaw for its
documented file-mode invocation (docs/RESOURCE_ENVELOPE.md). This mirrors the
established sys.path shim pattern used by sibling entrypoints
(collect_package_licensing_evidence.py, check_loop_identity tests, etc.).
…nt-policy

Three CI failures, one commit:

1. policy/source_integrity: 'UnitTests/tst_lifecycletest.cpp: direct
   application identity mutation' - initTestCase() called
   QCoreApplication::setApplicationName directly, which the Loop identity
   contract (scripts/ci/check_loop_identity.py) forbids outside
   LoopLibCore/sources/pdfapplicationidentity.cpp. Use the sanctioned
   pdf::initializeApplicationIdentity(PDFApplicationSurface::LoopEditor)
   entry point instead, matching tst_applicationidentitytest.cpp.

2. agent-fast clang_tidy: 'tst_lifecycletest.moc file not found' - the new
   test file matched no module_boundaries paths glob, so check-change.py
   never built UnitTestsLifecycle and AUTOMOC never generated the .moc.
   Add UnitTests/tst_lifecycletest.cpp to the core module's paths
   (target already registered in core tests and the architecture catalog).

3. agent-fast format: clang-format violations in the new ctor initializer
   list and ternary; reformatted with the repo .clang-format (v18).
PR 541's async rework replaced the QtConcurrent include in pdfdiff.cpp with
QUuid, losing the transitive QXmlStreamWriter definition (pdfdiff.h only
forward-declares it), so LoopLibCore fails to compile on dev:

  pdfdiff.cpp:1245/...: error: invalid use of incomplete type
  'class QXmlStreamWriter'
  pdfdiff.cpp:1572/1578/1584: variable has initializer but incomplete type

This was invisible to dev CI because agent-fast never selected the core
module on merged PRs (PR 541 merged with agent-fast red; dev CI #490 is red
on the same error). Enrolling UnitTestsLifecycle in the agent-policy core
module on PR 543 surfaced it. Add the direct include and reformat both
files (dev's CI also flags format violations for pdfdiff.cpp/.h from the
same merge).
Session 11 lane (Issues 34-36). R-01 partial with disposition incomplete
until hosted Linux matrix and external fixtures.

Made with [Cursor](https://cursor.com)

<!-- codesmith:footer -->
---
<a
href="https://app.blacksmith.sh/studio-berry/codesmith/loop/pr/542"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-light-v2.svg"><img
alt="View with [code]smith"
src="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg"></picture></a>
<a
href="https://backend.blacksmith.sh/track/enable-autofix?expires=1791331397&installation_model_id=435800&pr_number=542&repository=studio-berry%2Floop&return_to=https%3A%2F%2Fgithub.com%2Fstudio-berry%2Floop%2Fpull%2F542&signature=878090e11ddabd84723de98251608544a8d69ea9cb8c9eb83aa67539a515d9c5"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-light.svg"><img
alt="Autofix with [code]smith"
src="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"></picture></a>
<sup>Need help on this PR? Tag <code>@codesmith-bot</code> with what you
need. Autofix is disabled.</sup>

<!-- codesmith:autofix:disabled -->
<!-- /codesmith:footer -->
Second transitive-include casualty of PR 541's pdfdiff rework: the new
finalizeGraphicsPieces() page-hash code uses QCryptographicHash (lines
905-933) but no header in the TU provides its definition - pdfdiff.cpp
only transitively included it via the removed QtConcurrent include.
Both the agent-fast Linux build (gcc) and the fuzz harness build (clang,
stricter include semantics) fail identically:

  pdfdiff.cpp:905:5: error: 'QCryptographicHash' was not declared
  pdfdiff.cpp:932:14: error: 'QCryptographicHash' is not a class

Add the direct include (matches sibling sources such as
pdfartifactidentity.cpp).
…ct on read-only artifacts

UnitTestsLifecycle failed 4 of 13 slots on Linux agent-fast (Windows-local
authoring never exercised the committed manifest or Unix permissions):

1. qualificationCorpusSchemasAreValid: manifest key mismatch - test read
   'seeds' but manifest/checker/generator define 'passing_traces'.
2. promotedFailureTracesMatchExpectedViolations + crossPlatformCorpusReport:
   test read 'file'/'first_violated_invariant' but the manifest schema
   (scripts/ci/check_lifecycle_corpus.py) uses 'trace_file'/'expected_violation';
   empty filenames produced 'unable to open .../testdata/lifecycle/'.
3. deltaDebugShrinkPreservesFailure: the InjectSourceOverwrite injection
   appended to an artifact that importBytes publishes read-only; the append
   silently failed on Linux, the defect never reproduced, and the shrink
   had nothing to minimize. Re-enable the owner write bit (mirroring
   PDFArtifactStore::remove's permission handling) before corrupting.

Manifest, checker, generator, and test now share one schema.
Session 12 lane (Issues 37-39). L-01 partial until hosted
UnitTestsLifecycle on merged SHA.

Made with [Cursor](https://cursor.com)

<!-- codesmith:footer -->
---
<a
href="https://app.blacksmith.sh/studio-berry/codesmith/loop/pr/543"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-light-v2.svg"><img
alt="View with [code]smith"
src="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg"></picture></a>
<a
href="https://backend.blacksmith.sh/track/enable-autofix?expires=1791331427&installation_model_id=435800&pr_number=543&repository=studio-berry%2Floop&return_to=https%3A%2F%2Fgithub.com%2Fstudio-berry%2Floop%2Fpull%2F543&signature=c7c5cc1531a96ddfe867d89eb9886ae30411cf4941f610f797075b164dd9d22e"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-light.svg"><img
alt="Autofix with [code]smith"
src="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"></picture></a>
<sup>Need help on this PR? Tag <code>@codesmith-bot</code> with what you
need. Autofix is disabled.</sup>

<!-- codesmith:autofix:disabled -->
<!-- /codesmith:footer -->
Co-authored-by: michael berry <mberrys@users.noreply.github.com>
cursoragent and others added 3 commits September 9, 2026 22:02
Co-authored-by: michael berry <mberrys@users.noreply.github.com>
…ontract tests

Co-authored-by: michael berry <mberrys@users.noreply.github.com>
@cursor

cursor Bot commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

PR description

Promotes the 0.2.0.1 qualification line from unstable to stable, landing Sessions 10–13 scaffolding plus paired MSI/AppImage qualification fixes from #545.

This is the release-candidate promotion for the post–Phase 5 closeout work: trust/async semantics, resource-envelope evidence, lifecycle corpus and shrink, and package-licensing (SBOM, notices, Qt LGPL relink) scaffolding.

What lands

  • Session 10 (trust): PDF repair/diff async semantics, bleed repair contract, independent-validation evidence scaffolding
  • Session 11 (resource envelope): fail-closed fixture manifest and Windows matrix evidence
  • Session 12 (lifecycle): seeded command corpus, delta-debug shrink, minimized failure traces, and UnitTestsLifecycle expansion
  • Session 13 (package licensing): artifact-derived SBOM/notices generators and Qt relink scripts for Linux AppImage and Windows MSI lifecycle
  • CI / packaging: paired MSI + AppImage qualification fixes (Fix paired MSI and AppImage qualification #550), Linux relink contract tests, MSI lifecycle-owned Windows relink, and workflow-dispatch-only exact-SHA package gates
  • Stable merge resolution: retains Blacksmith Windows MSI runner policy from stable alongside the new relink workflow contracts

Merge resolution

Merged origin/stable into unstable to resolve conflicts in scripts/ci/test_workflow_contracts.py, keeping both:

  • relink ordering and package-script contract tests from the qualification line
  • test_blacksmith_is_reserved_for_windows_msi_only from the stable Blacksmith migration

Related work

Test plan

  • Local python3 -m unittest scripts.ci.test_workflow_contracts -v
  • Hosted CI green on this PR after merge-conflict resolution
  • Exact-SHA Linux AppImage + Windows MSI qualification on the merged candidate SHA (E-01)

@mberrys
mberrys merged commit 86ee1b5 into stable Sep 10, 2026
35 checks passed
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.

2 participants