Skip to content

release: v1.8.4 — actionable regulatory traceability + 8-page detailed packet - #7

Merged
flamehaven01 merged 3 commits into
mainfrom
release/v1.8.4
Jun 6, 2026
Merged

release: v1.8.4 — actionable regulatory traceability + 8-page detailed packet#7
flamehaven01 merged 3 commits into
mainfrom
release/v1.8.4

Conversation

@flamehaven01

Copy link
Copy Markdown
Owner

Summary

Rendering + packaging release. Scan schema and scoring are unchanged — this is a presentation and build-robustness release.

Regulatory traceability is now actionable everywhere

Each mapped requirement renders with a human-readable label (EU AI Act Art. 13 — Transparency, ICH M15 §2.1.2 — Context of Use), explicit status (Signal only / Partially aligned / Aligned), the finding_refs that triggered it, and the not_assessed gaps — across Markdown, explain text, HTML (new #s6 section), and PDF. Previously it only restated the boilerplate basis note.

Detailed PDF packet is now 8 pages (was 7)

Regulatory traceability gets its own dedicated page and Report Metadata moves to the next. This eliminates the KeepInFrame(mode="shrink") that was shrinking the overcrowded page's fonts out of step with the rest of the report. Page count is no longer a fixed design contract — Level 3 = full detail, page count follows content.

Page 1 carries an actionable regulatory bullet box

Right column, below AIRI Risk Triggers: mapped count by framework, the partially-aligned requirements by name, and the signal-only count — replacing the boilerplate full-width box.

Build robustness (root-cause fix)

python -m build was breaking on every MICA rotation because packaging manifests hard-coded versioned memory filenames that drifted (MANIFEST.in on v1.7.4, pyproject data-files on v1.7.8, package-data on v1.8.3). Fixed:

  • MANIFEST.in → version-agnostic recursive-include memory *.json *.md *.yaml glob.
  • New test_packaging_data_files_all_exist guard asserts every data-files entry exists on disk — turns this recurring build break into a fast unit-test failure naming the stale entry.

Other

  • Fixed double HTML-escaping of & in requirement labels; REQ_LABELS/REQ_STATUS_BADGE defined once and shared.
  • Rotated MICA memory to v1.8.4; bumped all version surfaces (__init__, pyproject, CITATION, README badge, SKILL).
  • Regenerated report-preview assets as 8-page.
  • Committed the regulatory registry pipeline source (references/_registry_entries/, tools/update_regulatory_registry.py) that v1.8.3 documented but never versioned.

Verification

  • 179 passed, 1 skipped; PCT CLOSED CONTRACT.
  • python -m buildstem_ai-1.8.4.tar.gz + wheel.
  • CI L1/L2/L3 scan reproduced locally; Level 3 emits _detailed_8p.pdf.
  • DOI: concept DOI 10.5281/zenodo.20154479 consistent; .zenodo.json version-agnostic.

…k basis

v1.8.3 documented the regulatory basis registry but never committed its source layer. Add it now:

- tools/update_regulatory_registry.py: rebuilds docs/regulatory_basis_registry.v1.json from references/_registry_entries/*.yaml. _build_display_note() prefers display_label over short_label and skips unlabeled supplementary sources, keeping the note concise and carrying 'ICH M15 MIDD (Step 4, Jan 2026)'.

- references/_registry_entries/: per-source YAML (EU AI Act, FDA QMSR/ML-MD/PCCP, IMDRF SaMD/GMLP, ICH M15) as the single source of truth.

- references/M15 ...md: ICH M15 reference text (PDF converted to Markdown).

- docs/regulatory_basis_registry.v1.json: rebuilt from the YAML sources.
…d packet

Rendering and packaging release. Scan schema and scoring unchanged.

- Regulatory traceability renders human-readable labels, status (Signal only / Partially aligned / Aligned), finding_refs, and not_assessed gaps across Markdown, explain, HTML (new #s6 section), and PDF - no longer a basis-note restatement.

- Detailed PDF packet (Level 3) is now 8 pages: regulatory traceability gets its own page and Report Metadata moves to the next, eliminating the KeepInFrame shrink that desynced fonts across pages. _LEVEL_MAP[3] -> (detailed, 8); CI artifact assertion -> _8p.pdf.

- Page 1 executive summary carries an actionable regulatory bullet box (mapped count, partially-aligned requirements by name, signal-only count), replacing the boilerplate basis-note box.

- Fix double HTML-escaping of '&' in requirement labels; REQ_LABELS and REQ_STATUS_BADGE defined once in render_html_components and shared by all renderers.

- Rotate MICA memory to v1.8.4; fix MANIFEST.in (stale v1.7.4) and pyproject package-data (v1.8.3) to reference the active memory trio.

- Regenerate report-preview assets as 8-page; bump version surfaces to 1.8.4.

178 passed, 1 skipped; PCT CLOSED CONTRACT.
…reak the build

python -m build failed because packaging manifests hard-coded versioned memory filenames that drifted from the active files (MANIFEST.in on v1.7.4, pyproject data-files on v1.7.8, package-data on v1.8.3).

- MANIFEST.in: replace explicit memory filenames with a version-agnostic 'recursive-include memory *.json *.md *.yaml' glob (sdist).

- Add test_packaging_data_files_all_exist: asserts every [tool.setuptools.data-files] entry exists on disk, turning this recurring build break into a fast unit-test failure that names the stale entry (the wheel safety net, since data-files cannot glob).

Build verified: stem_ai-1.8.4.tar.gz + wheel. 179 passed.
@flamehaven01
flamehaven01 merged commit df5fc86 into main Jun 6, 2026
5 checks passed
@flamehaven01
flamehaven01 deleted the release/v1.8.4 branch June 6, 2026 15:47

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1155f3c7a3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +59 to +60
"short_label": entry.get("short_label", entry.get("title", "")),
"display_label": entry.get("display_label", entry.get("title", "")),

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Keep generated registry entries schema-valid

This generator now emits short_label/display_label (and nearby source_file, sections, and managed_by_update_script) into docs/regulatory_basis_registry.v1.json, but docs/regulatory_basis_registry.schema.json still sets additionalProperties: false for each source and does not allow those fields; the new ICH entry also uses final_guideline, which is outside the schema's status enum. Any documented registry validation or downstream consumer that enforces the shipped schema will reject the committed/generated registry until the schema is updated or these fields are not written.

Useful? React with 👍 / 👎.

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