Spaces:
Sleeping
Sleeping
File size: 54,730 Bytes
6a1cba7 5d47b47 d647970 5d47b47 6a1cba7 5d47b47 6a1cba7 e9858b7 6a1cba7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 | # Changelog
All notable changes to STEM BIO-AI are documented in this file.
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
IMMUTABLE formula changes require a minor version increment (1.x.0).
Rubric refinements and additions use patch versions (1.0.x).
---
## [Unreleased]
---
## [1.8.0] - 2026-05-31
### Added
- Added explicit MICA invocation runtime surfaces for session-start governance:
- `tools/mica_runtime.py --format session-report`
- `tools/mica_invoke.py --mode {natural|guided|forced}`
- `mica_invoke.bat` Windows wrapper
- Added `SECURITY.md` so the default deterministic scan boundary, advisory/provider boundary, and verification path are documented as first-class repository surfaces.
- Added focused regression coverage for the new MICA invocation/session-report path in `tests/test_mica_invocation.py`.
### Changed
- Refreshed the tracked HTML preview artifact under `docs/assets/report-preview/yorkeccak_bio_report.html` from a real `1.8.0` generated report so the README/browser preview matches the current runtime surface.
---
## [1.7.9] - 2026-05-31
### Changed
- Improved audit artifact inspectability by promoting bounded AIRI trigger semantics over bare coverage counts: report surfaces now emphasize `AIRI Risk Triggers`, expose primary/secondary detector roles, and show mapping reasoning directly in human-readable artifacts.
- Reduced repeated evidence noise across the artifact stack by compacting repeated same-file evidence in HTML and explain surfaces, documenting the same readability rule in Markdown, and surfacing explicit canonical-boundary notes for JSON and PDF outputs.
- Humanized top-risk summaries and remediation targets so detector output appears as reviewer-usable audit findings instead of raw check IDs, while still preserving full-fidelity detector detail in JSON.
- Added bounded `tier-impact` and partial-credit semantics to rubric surfaces so Stage 1/2R/3 findings are easier to trace without changing score math.
- Reduced `detector_bio.py` repeated AST parse/parent-annotation overhead by building file AST contexts once per scan, pre-bucketing core node classes (`Constant`, `Assign`, `Call`, `Try`, `If`), and reusing them across the SMILES, parser-guard, silent-mock, and run-trace collectors. This is a semantics-preserving performance optimization only.
- Tightened bio-detector scan boundaries by excluding `.manual_verify` from generated/non-runtime paths and replacing the broad trace-manifest `rglob("*")` walk with a pruned filesystem traversal that preserves existing detector semantics while lowering trace-scan overhead.
- Deferred the RDKit optional lane until at least one SMILES-like candidate is present, and cached the optional `rdkit.Chem` import so availability/import work is not repeated unnecessarily across candidate checks.
- Added a file-signature AST context cache for `detector_bio.py` so repeated scans of unchanged Python files in the same process avoid redundant `ast.parse/compile` work while keeping detector semantics unchanged.
- Changed the CLI default report depth from `--level 1` to `--level 3`, so the plain `stem <repo>` path now emits the full packet by default unless the user selects a shallower level.
- Reworked ReportLab PDF pagination so the brief, standard, and full packet tiers now honor their intended page counts, keeping the executive/regulatory summary on page 1 instead of allowing silent overflow into extra pages.
- Redefined detailed packet tiers so `--level 2` now emits a standard 5-page review packet and `--level 3` emits the full 7-page packet, restoring Stage 4 as a dedicated PDF page and preventing end-of-report overcrowding in the former 5-page Level 3 path.
---
## [1.7.8] - 2026-05-17
### Added
- Added additive `C6_mock_auth_or_fail_open_boundary` detection so mock authentication, auto-login, or no-auth self-host/local trust-boundary signals can surface as a dedicated Code Integrity lane without changing formal score math.
### Changed
- Updated Markdown, explain, HTML, and PDF output surfaces so `C6` appears consistently across `code_integrity`, report cards, remediation guidance, and proof traces.
- Clarified public documentation and API descriptions from `C1βC5` to `C1βC6`, and documented that `C6` is currently a report-layer/code-integrity warning rather than an AIRI-mapped detector lane.
- Performed a safe `detector_bio.py` structural cleanup by extracting the shared AST-path iteration helper and reusing it across multiple bio detectors, reducing duplicated parsing logic without changing detector semantics.
- Rotated the active package, CLI, documentation, policy, and MICA version surfaces to `v1.7.8`.
---
## [1.7.7] - 2026-05-16
### Changed
- Split the former overloaded `C4` output surface so executable fail-open exception handling remains in `C4_exception_handling_clinical_adjacent_paths`, while unsupported compliance or clinical-boundary integrity warnings now surface in the new `C5_compliance_boundary_integrity` lane.
- Added additive detector traceability to `stage_2r_rubric` and `stage_3_rubric` items through `detector_id` and `decision_basis`, making summary and report outputs more inspectable without changing score math.
- Extended AIRI covered-risk records with additive `mapping_details` reasoning objects so report surfaces can explain why a detector mapped to a specific AIRI risk instead of showing only the coverage count.
- Updated Markdown, explain, HTML, and PDF report surfaces so AIRI examples now show bounded `why mapped` reasoning and Code Integrity surfaces expose the new `C5` lane.
- Rotated the active package, CLI, documentation, policy, and MICA version surfaces to `v1.7.7`.
---
## [1.7.6] - 2026-05-16
### Changed
- Expanded Stage 3 provenance and Stage 4 replication evidence recognition for JavaScript repositories so `package.json`, `package-lock.json`, `pnpm-lock.yaml`, `yarn.lock`, and `npm-shrinkwrap.json` now count as dependency/provenance or lock-resolution surfaces where appropriate.
- Corrected a false-negative path where JavaScript lockfiles were previously ignored in `B1_data_provenance_controls`, `S4_environment_lock_evidence`, and `S4_exact_dependency_pins_or_hashes`, materially changing affected repo scores without changing the formal tier definitions.
- Added additive `R2R_D5_single_external_service_dependency` detection so repositories can now surface vendor/API lock-in risk in the report layer when self-host or local-operation claims coexist with required named external service dependencies.
- Connected the new external-service dependency signal into `code_integrity` as a `C2` warning path and into AIRI coverage when detector mappings are present, while still keeping it out of formal score math.
- Added additive `S1_R2_unsupported_legal_or_compliance_claim` detection so unsupported `HIPAA`, `FDA-ready`, `CE-ready`, `clinical-grade`, and similar claim language can surface in the report layer when reviewed sources lack stronger governance-grounding evidence.
- Connected unsupported legal/compliance claims into Stage 1 regulatory traceability as `COMPLIANCE_CLAIM_GROUNDING_SIGNAL`, into `code_integrity` as a `C4` warning path, and into AIRI coverage where bounded mappings exist, while keeping the signal out of formal score math.
- Rotated the active package, CLI, documentation, policy, and MICA version surfaces to `v1.7.6`.
---
## [1.7.5] - 2026-05-13
### Added
- Added additive evidence-ledger quality fields so findings now surface `evidence_status` and `confidence` directly in runtime artifacts and report surfaces.
- Added `audit_freshness` metadata to scan results, including review-cycle guidance, expiry date, and change-triggered re-audit hints.
### Changed
- Surfaced audit-freshness summaries in Markdown, explain, and HTML outputs so review packets show recency expectations explicitly instead of leaving them implicit.
- Narrowed Stage 1 regulatory-responsibility scoring so self-asserted `HIPAA` or privacy/compliance language no longer receives full regulatory-framework credit; these claims now surface as weaker governance signals that require independent verification.
- Narrowed Stage 4 dataset-link scoring so generic external `data API` marketing links no longer count as dataset/data-source reproducibility evidence.
- Added a first-class `S1_R2_weak_regulatory_self_assertion` evidence signal so weak compliance claims are visible in the evidence ledger and explain output instead of appearing only in rubric math.
- Kept self-asserted compliance risk in the report/scoring layer only; this signal is not yet mapped into AIRI detector coverage and should not be interpreted as AIRI-supported risk coverage.
- Cleaned two confirmed single-file slop findings in active runtime surfaces:
- removed an unused `json` import from `stem_ai/scanner.py`
- replaced an empty `except` branch in `stem_ai/render_html.py` with explicit `continue`
- Rotated the active package, CLI, documentation, policy, and MICA version surfaces to `v1.7.5`.
---
## [1.7.4] - 2026-05-13
### Added
- Added simulation-only local profile-file support to `stem policy simulate`, allowing schema-valid researcher profile experiments without registering a new named policy or opening the authoritative score path.
### Changed
- Surfaced AIRI summary material more clearly across the demo and report outputs, including the Hugging Face overview card and markdown/explain report sections.
- Clarified policy simulation output so replication-lane posture changes, cap effects, and mirror-only boundaries are explained directly instead of appearing as unexplained zero-delta previews.
- Standardized default CLI artifact routing under `stem_output/<repo_slug>` whenever the output root is `stem_output`.
- Refined the Hugging Face demo layout so the overview cards stay in a stable 3-column desktop grid instead of expanding to 4 columns on wide screens.
- Simplified advisory packet section traversal in `stem_ai/advisory_contract.py` with a low-risk helper extraction.
- Rotated the active package, CLI, documentation, policy, and MICA version surfaces to `v1.7.4`.
### Notes
- PyPI uploads for this release should use freshly built `1.7.4` artifacts only. Do not upload stale archives from older `dist/` contents.
---
## [1.7.3] - 2026-05-13
### Changed
- Removed two confirmed unused helpers from the active runtime surface:
- `stem_ai/detectors.py::collect_evidence`
- `stem_ai/app.py::_gradio_major`
- Refreshed the Hugging Face / Gradio demo text in `stem_ai/app.py` so the UI no longer advertises stale `1.6.0` wording and now reflects the current deterministic layer set.
- Tightened the Hugging Face overview-card grid in `stem_ai/app.py` so desktop layouts stay at a stable 3-column arrangement instead of expanding to 4 columns on wide screens, while still collapsing responsively on smaller widths.
- Standardized CLI artifact output under `stem_output/<repo_slug>` whenever the output root is `stem_output`, so repeated local scans stay grouped by target repository without changing other custom output paths.
- Rotated the active package, CLI, policy, documentation, and MICA version surfaces to `v1.7.3`.
### Verified
- Confirmed the removed helpers had no active runtime callers in the current repository.
- Re-ran import smoke for `stem_ai.detectors` after dead-code removal.
- Added regression coverage for `stem_output/<repo_slug>` output routing in the CLI scan path.
---
## [1.7.2] - 2026-05-12
### Changed
- Tightened `.slopconfig.yaml` so temporary and generated analysis paths (`tmp`, `build`, `audits`, `stem_output*`, `.manual_verify`) are excluded more explicitly from local structural inspection runs.
- Removed unused HTML renderer imports in `stem_ai/render_html.py`, reducing inspection noise without changing report behavior.
- Simplified `stem_ai/detector_contract.py` by extracting shared Python-module traversal and public-function iteration helpers, reducing repetition while preserving detector outputs.
- Revalidated the shipped calibration profiles against `1.7.2` and rotated public package, CLI, documentation, policy, and active MICA version surfaces to `v1.7.2`.
### Verified
- Confirmed P0/P1 parity on a same-target self-scan comparison (`A` vs `B`) with no drift in:
- `score.final_score`
- `score.formal_tier`
- `code_contract`
- `detector_summary`
- `airi_risk_coverage`
- `evidence_ledger` count
---
## [1.7.1] - 2026-05-12
### Added
- Added a governed local AIRI data layer with three packaged registries:
- `stem_ai/data/airi_registry_full.v1.json` β normalized full local registry derived from the upstream AIRI CSV snapshot
- `stem_ai/data/airi_runtime_bundle.v1.json` β curated deterministic runtime bundle
- `stem_ai/data/airi_detector_mapping.v1.json` β detector-to-risk mapping registry with bundle/full-scope gap labels
- Added AIRI governance and attribution documents:
- `docs/AIRI_DATA_GOVERNANCE.md`
- `docs/THIRD_PARTY_DATA.md`
- `docs/airi_registry.schema.json`
- `docs/airi_detector_mapping.schema.json`
- Added regression coverage for AIRI registry/bundle/mapping provenance surfacing and bundle-scope gap separation.
### Changed
- Replaced hardcoded AIRI detector mappings and known-gap lists in `stem_ai/airi_risk_mapping.py` with packaged local registry files so provenance, runtime scope, and mapping governance are separated explicitly.
- Updated AIRI coverage outputs to surface registry version, runtime bundle version, mapping version, upstream snapshot date, license, attribution note, and split known gaps into `known_gaps_in_bundle` and `known_gaps_outside_bundle`.
- Corrected HTML score-matrix T0 hard-floor wording to match the authoritative 39-point cap used by the scanner and scoring rationale.
- Strengthened AIRI wording across README, HTML report docs, API contract, calibration architecture, and runtime output so the scannerβs curated runtime bundle is not confused with the full upstream AIRI universe.
- Rotated package/version surfaces to v1.7.1 and packaged the new AIRI registry artifacts.
---
## [1.7.0] - 2026-05-12
### Added
- **Layer 2 AST Contract Detectors (CC-1 / CC-2 / CC-3)** β new `stem_ai/detector_contract.py` module performing Python AST analysis beyond surface-scan reach:
- `CC1_clinical_zero_default`: detects keyword-only and positional function parameters named `confidence_threshold`, `score_threshold`, `min_confidence`, etc. defaulted to `0.0` β a silent fail-open pattern in clinical inference paths.
- `CC2_api_contract`: cross-checks names documented in README against `__all__` exports; flags phantom APIs (documented but not exported).
- `CC3_shallow_validator`: identifies `validate_*` / `check_*` functions that use only `len()` (length gate) without regex structure validation β insufficient for PII/clinical data fields.
- **MIT AI Risk Repository (AIRI) V4 integration** β new `stem_ai/airi_risk_mapping.py` and `stem_ai/data/airi_medical_risks.json` (184 curated medical/clinical risk entries). Every scan now produces an `airi_risk_coverage` section mapping triggered detectors to their AIRI risk IDs, coverage rate, and known gaps.
- **Interactive 5-section HTML dashboard** β `--format html` (and `--format all`) now generates a self-contained interactive report with:
- Sticky nav with scroll-spy active state
- SVG semicircle score gauge + tier badge in hero header
- Expandable code-integrity cards (click to reveal full evidence list)
- AIRI covered/gaps toggle buttons
- Evidence ledger filter chips (FAIL / WARN / PASS / INFO)
- Tooltip `?` icons on every metric header (CSS `::after`, no JS)
- Hover transitions and keyboard accessibility throughout
- `stem_ai/render_html_components.py` and `stem_ai/render_html_styles.py` β renderer split into three focused modules (each < 250 lines).
- `docs/UI_HTML_REPORT.md` β full specification for the HTML dashboard format, interactive features, and AIRI coverage mapping.
- `docs/assets/html_report_preview.png` β screenshot of the interactive HTML report.
### Changed
- `stem_ai/scanner.py` β wired CC-1/CC-2/CC-3 findings into `code_contract` result key; CC WARN entries surface in `notable_risks`; `build_airi_coverage()` called at the end of every scan.
- Rotated the active MICA memory layer and public package/version surfaces to v1.7.0.
---
## [1.6.8] - 2026-05-11
### Added
- Added root `CITATION.cff` and `.zenodo.json` so GitHub releases can be archived as DOI-backed software records through Zenodo.
- Added regression coverage for profile-aware C1 penalty simulation and preview-only post-delta profile validation.
### Changed
- Hardened `stem policy simulate` so preview scoring now uses the selected profile's `C1_penalty` when the baseline scan has already triggered C1, instead of assuming the runtime constant forever.
- Revalidated effective `preview_only` profiles after bounded deltas are applied, keeping future preview expansion inside the same runtime policy guardrails as packaged profiles.
- Strengthened mirror-only wording across CLI, Markdown, explain, calibration-architecture, and API-contract surfaces so `scan --policy <name>` is not confused with score-authoritative policy simulation.
- Rotated the active MICA memory layer and public package/version surfaces to v1.6.8.
---
## [1.6.7] - 2026-05-11
### Added
- Added `stem policy derive` as an auditable researcher-intent translation surface built from the documented 0-5 rule table.
- Added `stem policy simulate <repo>` so users can preview named-profile or preview-only policy outcomes against a real repository before any authoritative score changes are enabled.
- Added deterministic translation and simulation helpers for top-down rule matching, preview-only bounded deltas, and policy-tier/cap preview math.
- Added regression coverage for intent translation, preview-only fallback, and CLI derive/simulate outputs.
### Changed
- Kept formal scan scoring unchanged while adding governed derive/simulate UX, so 1.6.7 narrows the user-policy gap without turning the CLI into a free-form tuning console.
- Clarified calibration documentation so the profile contract, policy visibility, and derive/simulate preview lanes are described as implemented mirror-only architecture rather than as a future-only proposal.
- Rotated the active MICA memory layer and public package/version surfaces to v1.6.7.
---
## [1.6.6] - 2026-05-10
### Added
- Added `stem policy list` and `stem policy explain <name>` so named calibration profiles can be inspected directly from the CLI.
- Added `--policy <name>` to scan, gate, and advisory workflows so selected profiles are surfaced consistently in result metadata and stdout summaries.
- Added regression coverage for policy list/explain CLI behavior and selected-profile metadata surfacing.
### Changed
- Extended Markdown, explain, and PDF header surfaces to show the active calibration profile name, status, and read mode.
- Kept policy selection mirror-only in 1.6.6 so named profiles remain visible and testable before any score-authoritative read-through is enabled.
- Rotated the active MICA memory layer and public package/version surfaces to v1.6.6.
---
## [1.6.5] - 2026-05-10
### Added
- Added `stem_ai.calibration_profile` for Phase 1 mirror-only calibration profile loading, validation, and canonical policy hashing.
- Added packaged policy artifacts: `policy/scoring_profile.schema.json`, `policy/scoring_profile.default.v1.json`, and `policy/scoring_profile.strict_clinical_adjacency.v1.json`.
- Added calibration profile metadata to result objects so outputs now surface `policy_version`, `profile_name`, `profile_status`, `profile_read_mode`, and canonical `policy_sha256`.
- Added regression coverage for calibration profile validation, metadata surfacing, and Markdown / explain rendering.
- Added a fixture-format example for Phase 1 profile parity under `tests/fixtures/calibration_profiles/`.
### Changed
- Kept scoring behavior unchanged while introducing mirror-only profile validation so Phase 1 remains parity-first rather than behavior-changing.
- Updated `docs/API_CONTRACT.md` and `docs/CALIBRATION_PROFILE_DESIGN.md` to define Phase 1 calibration metadata, fixture format, and schema/runtime validation boundaries.
- Rotated the active MICA memory layer and public package/version surfaces to v1.6.5.
---
## [1.6.4] - 2026-05-10
### Added
- Added CA taxonomy provenance fields to the public classification surface so outputs now record the active runtime taxonomy version and source.
- Added regression coverage for CA taxonomy metadata surfacing and tightened B2 threshold behavior.
### Changed
- Tightened Stage 3 B2 entry criteria so a minimal single-term limitations mention no longer receives partial credit without structured boundary language.
- Clarified in public docs that the active clinical-adjacent taxonomy remains a runtime `scanner.py` authority and that reference markdown is informative, not authoritative.
- Rotated the active MICA memory layer and public package/version surfaces to v1.6.4.
---
## [1.6.3] - 2026-05-10
### Added
- Added AST analysis scope surfacing to stdout, Markdown reports, and PDF outputs when deterministic AST scanning is capped by file-count limits.
- Added `docs/CALIBRATION_PROFILE_DESIGN.md` as a design proposal for future versioned scoring-policy profiles.
- Added regression coverage for AST cap surfacing across CLI, Markdown, and PDF fallback outputs.
- Added regression coverage for negative-context provenance handling in Stage 3 B1 scoring.
### Changed
- Tightened Stage 3 B1 provenance scoring so negative or non-approval IRB / data-source contexts no longer receive maximum provenance credit.
- Updated `docs/SCORING_RATIONALE.md` with executive summary, quick reference, key terms, deliberate scope boundaries, and explicit order-of-operations onboarding.
- Rotated the active MICA memory layer and public package/version surfaces to v1.6.3.
---
## [1.6.2] - 2026-05-08
### Added
- Added workflow-oriented CLI entry points: `stem scan`, `stem gate`, and `stem advisory validate|packet|call|check-response`.
- Added `--summary full|compact|off` stdout control with command-specific defaults (`scan=full`, `gate/advisory=compact`).
- Added `--output` as a clearer alias for `--out`.
- Added regression coverage for the new workflow-oriented CLI paths and shorthand compatibility.
- Added `pytest.ini` to ignore transient local output/temp directories during test collection.
### Changed
- Reframed the CLI around user intent instead of one long option string while preserving `stem <folder>` and `stem audit ...` compatibility.
- Updated README and `docs/CLI_REFERENCE.md` to document the new workflow model and migration path from legacy inline advisory/gate flags.
- Promoted package metadata and public version references to v1.6.2.
---
## [1.6.1] - 2026-05-08
### Added
- Added `--tier-gate T0|T1|T2|T3|T4` CLI flag for CI/CD pipeline integration: exit code 1 if the audit tier is below the required threshold.
- Added `--quiet` CLI flag to suppress human-readable stdout summary while still writing artifacts.
- Added enriched CLI stdout summary with per-stage scoring breakdown (Stage 1β4), clinical adjacency status, code integrity warnings, bio diagnostics, and regulatory review flags.
- Added AI usage transparency line to stdout: always reports whether the scan used deterministic-only mode or advisory provider mode.
- Added remediation hints from `notable_risks` (top 3 action items displayed in stdout).
- Added `if __name__ == "__main__"` guard to `cli.py` so `python -m stem_ai.cli` works as a valid entry point.
- Added `docs/CLI_REFERENCE.md` documenting all CLI flags, stdout format, CI/CD integration examples, exit codes, and AI transparency features.
### Changed
- CLI stdout now surfaces data from v1.3.0βv1.6.0 engine features (replication lane, bio diagnostics, regulatory traceability) that were previously only available in JSON/Markdown/PDF artifacts.
- Updated README Quick Start section with CI/CD gate examples and CLI reference link.
- Updated version badge and citation to v1.6.1.
---
## [1.6.0] - 2026-05-06
### Added
- Added a registry-driven regulatory traceability output layer with `regulatory_basis`, `stage_traceability`, and `regulatory_traceability` fields in the local CLI result object.
- Added report/explain/PDF regulatory basis note rendering using `docs/regulatory_basis_registry.v1.json` and its JSON schema.
- Added automated `review_required` checks for stale registry month labels, draft-guidance presence, and missing required regulatory source families.
- Added direct surfacing of bio-detector scope notes so `not_detected` and `not_applicable` statuses explain what was and was not assessed.
### Changed
- Promoted the local CLI result schema to `stem-ai-local-cli-result-v1.6` to match the now-stable traceability payload shape.
- Hardened regulatory traceability semantics so negative or missing Stage 1 boundary signals no longer read as positive Article 13 alignment.
- Lowered reasoning diagnostics wording from model-like confidence language to explicit heuristic language (`heuristic_consistent`, `low_spread`, `within_heuristic_gate`) and surfaced uncalibrated priors directly in report text.
- Updated package metadata, README, MICA active memory layer, and public docs for the v1.6.0 release.
### Fixed
- Restricted offline advisory fallback citations to active evidence states (`detected`, `error`, `manual_review_required`) so absent or not-detected findings no longer masquerade as priority evidence.
- Regenerated ClawBio dogfooding artifacts against the live v1.6.0 code path to confirm new schema, traceability wording, and detector-scope notes are rendered consistently.
- Removed superseded deterministic-diagnostics proposal indirection from the active public docs surface so the 1.6.0 implementation pair is now `DETERMINISTIC_DIAGNOSTICS.md` plus `REGULATORY_MAPPING.md`.
---
## [1.5.11] - 2026-05-06
### Added
- Added `BIO_smiles_rdkit_validation` as an optional A1 lane that emits stronger evidence when RDKit is available and rejects invalid hardcoded SMILES-like candidates.
- Added regression coverage for RDKit-lane unavailable / invalid / valid paths and for `AllChem.MolFromSmiles` parser-guard detection.
### Changed
- Tightened `BIO_smiles_surface_integrity` precision by excluding generated surfaces (`build/`, `dist/`, `audits/`), hex colors, version/hash/schema strings, and other non-chemistry token patterns.
- Expanded SMILES parser-guard detection to include `AllChem.MolFromSmiles`.
- Updated the deterministic diagnostics spec to mark A1 as implemented and to document the current evidence-only behavior.
- Rotated the active MICA memory layer to v1.5.11 for the SMILES precision and RDKit-lane patch release.
### Fixed
- Eliminated major SMILES false positives observed during dogfooding on `AI-SLOP-DETECTOR`, `STEM-BIO-AI`, and `BioClaw`.
- Corrected RDKit-lane status semantics so environments with RDKit installed but no invalid candidates report `not_detected` instead of `not_applicable`.
---
## [1.5.10] - 2026-05-06
### Added
- Added `stem_ai/detector_bio.py` with deterministic evidence-only bio diagnostics for conservative SMILES surface checks, SMILES parser-guard checks, silent mock fallback detection, traceability manifest surface detection, and bio-tool subprocess run-trace heuristics.
- Added Markdown and `--explain` surfacing for bio deterministic diagnostics in audit outputs.
- Added regression coverage for bio diagnostics and explain/Markdown surfacing.
- Added `docs/DETERMINISTIC_DIAGNOSTICS.md` as the promoted active deterministic diagnostics specification.
- Added `docs/REGULATORY_MAPPING.md` to the public docs surface and package manifest.
### Changed
- Promoted `docs/DETERMINISTIC_DIAGNOSTICS_PROPOSAL.md` to a pointer document and moved active documentation to `docs/DETERMINISTIC_DIAGNOSTICS.md`.
- Linked README proof surfaces to deterministic diagnostics and regulatory traceability docs.
- Rotated the active MICA memory layer to v1.5.10 for the bio-detector implementation release.
### Fixed
- Restored bio-detector integration to the evidence-bundle path in `stem_ai/detectors.py` and removed drift from an invalid direct-scanner wiring pattern.
- Restored `stage_3` scoring flow in `stem_ai/scanner.py` after accidental regression during external edits.
---
## [1.5.9] - 2026-05-06
### Added
- Added `docs/ADVISORY_SECRET_HANDLING.md` covering provider-specific environment variables, `.env` handling policy, endpoint restrictions, artifact redaction rules, and the no-secret-persistence boundary for advisory packets.
- Added `docs/ADVISORY_RUNTIME.md` documenting the explicit `--advisory call` trust boundary, runtime guards, and current non-implemented adapter behavior.
- Added `docs/EXAMPLE_AUDITS.md` as a surface-facing proof index for sample report artifacts, live demo behavior, and comparison expectations.
- Added `.env.example` documenting supported advisory environment variables without shipping any secret values.
### Changed
- Strengthened the public README surface with PyPI install path, proof-surface links, and explicit secret-boundary notes for advisory packet export.
- Rotated the active MICA memory layer to v1.5.9 and documented advisory secret-boundary policy in the active archive/playbook/lessons set.
### Fixed
- Advisory provider configuration now prefers provider-specific API key env vars before the generic fallback and exports the selected env-var name without exposing the secret.
- Advisory provider request validation now rejects embedded-credential base URLs, rejects non-local plain `http` endpoints, and requires `https` for cloud-provider overrides.
- Secret-free handoff metadata now includes endpoint-policy validation, network-mode classification, and exported env-contract metadata for downstream runners.
- Added explicit `--advisory call` runtime mode with centralized redaction, adapter logging policy export, child-env allowlist reporting, and artifact pre-write sanitization for JSON/Markdown/explain outputs.
---
## [1.5.8] - 2026-05-05
### Fixed
- Narrowed `C2_dependency_pinning` to real dependency-manifest surfaces so non-dependency `pyproject.toml` metadata lines such as `name`, `version`, `readme`, and `keywords` no longer count as loose dependencies.
- Exempted realistic credential fixtures under test/example paths from `C1_hardcoded_credentials` penalties while keeping production-path `sk-*`, `AKIA*`, `ghp_*`, and `api_key=` detections active.
- Replaced broad text-level `C4` matching with AST-backed executable fail-open handler detection so string literals and detector-explanation text containing `except: pass` no longer trigger warnings.
- Removed the Gradio 6 runtime warning in the Hugging Face demo by routing CSS through the correct `Blocks`/`launch` compatibility path.
- Fixed long-standing package manifest drift so PyPI artifacts include `SKILL.md`, active `memory/` files, and public `docs/` contract files instead of shipping a code-only package surface.
### Added
- Added regression coverage for credential-fixture exemption, pyproject metadata precision, executable fail-open detection, and non-executable `except: pass` string immunity.
### Changed
- Improved detector honesty on final dogfooding targets: `Sidrce` now clears prior `C1/C2/C4` false positives and moves from `52 / T1` to `62 / T2` under the corrected scanner.
---
## [1.5.7] - 2026-05-05
### Added
- Added advisory packet self-validation via `packet_contract`, checking allowlist parity, snippet omission, and omission-count sanity before any provider handoff.
- Added exported advisory contract schemas (`contract_schemas`) so downstream validators can consume stable input/output packet shapes without reading repository code.
- Added secret-free provider request schema export and deterministic provider argument validation metadata under `provider_request`.
- Added regression coverage for advisory contract schema export, provider request validation, advisory packet allowlist mismatch, and invalid payload-shape handling.
- Added `docs/MICA_MEMORY.md` documenting active-vs-archived memory policy, `mica.yaml` loader responsibility, and release rotation rules.
### Changed
- Updated README, API contract, scoring rationale version markers, and release validation defaults for the v1.5.7 advisory contract-hardening release.
- Rotated the active MICA memory layer to v1.5.7 and updated `memory/mica.yaml` / `SKILL.md` so the loader follows the active files instead of stale hard-coded memory filenames.
### Fixed
- Hardened advisory validation so malformed provider payload shapes are rejected as structured contract errors instead of causing a validator crash.
---
## [1.5.6] - 2026-05-01
### Fixed
- Reduced CA-DIRECT/T0 hard-floor false positives from framework meta-documentation such as scoring tables, regex descriptions, advisory contracts, and diagnostic-layer labels.
- Expanded clinical-boundary detection for phrases such as "not a medical device", "not intended for clinical use", "not clinically validated", and "does not provide clinical diagnoses".
- Updated stale public contract, scoring rationale, release validation default, measurement-basis text, and PDF Stage 3 explanatory copy to match v1.5.5/v1.5.6 behavior.
### Added
- Added regression coverage proving real direct clinical claims still trigger the T0 floor while framework self-documentation does not.
- Added `scripts/benchmark_local10_ca_fp_impact.py` and local-10 v1.5.6 CA false-positive impact artifacts.
---
## [1.5.5] - 2026-05-01
### Added
- Added `docs/API_CONTRACT.md`: stable public contract with Locked/Additive/Internal field classifications, full `EvidenceFinding` record specification, Advisory Protocol (6 non-negotiable rules), Python API signatures, tier definitions, and additive-only compatibility policy.
### Changed
- Superseded `docs/API_CONTRACT_V1_5_DRAFT.md` (retained for historical reference).
- Updated README: professional bio/medical AI structure, v1.5.5 badge and citation, Detection table moved to collapsible section, Advisory Contract section with enforcement rules, removed stale v1.3 references.
- Bumped version to 1.5.5 (aligning package version with v1.5.4 code tag that was released without a version bump).
---
## [1.5.4] - 2026-05-01
### Added
- Refined Stage 3 T3, B1, and B2 scoring from binary to three-tier:
- T3 Changelog: 0 (absent) / +5 (exists, no bug entries) / +15 (bug-fix, patch, or security entries present).
- B1 Data Provenance: 0 (no manifest) / +10 (manifest present) / +15 (manifest + IRB or dataset-citation language).
- B2 Bias/Limitations: 0 (no vocabulary) / +8 (vocabulary only) / +15 (vocabulary + quantitative measurement evidence).
- Added `CHANGELOG_BUG_TERMS`, `DATA_SOURCE_TERMS`, and `BIAS_MEASUREMENT_TERMS` regex patterns.
- Added `_score_changelog`, `_score_provenance`, and `_score_bias` helper functions extracted from `_score_stage_3`.
- Added unit tests for each three-tier scoring path (9 new test cases).
- Added `scripts/benchmark_local10_stage3_3tier_impact.py` and local-10 v1.5.4 Stage 3 three-tier impact benchmark artifacts.
- Added `docs/SCORING_RATIONALE.md`: formula derivation, baseline-60 convention, tier boundary justification (anchored to scoring baseline Β± offsets), Stage 1β4 rationale, score-cap policy, and calibration gap disclosures.
### Changed
- Local-10 benchmark: 0 tier changes vs v1.5.3 baseline; mean score delta β0.9 (bare provenance manifests no longer earn full B1 credit without dataset citation language).
---
## [1.5.3] - 2026-05-01
### Added
- Added Stage 2R limitation-repetition credit across README, docs, and changelog surfaces.
- Added Stage 2R deductions for internal clinical-boundary contradictions, stale README/package version metadata, and unsupported workflow/test/CLI claims.
- Added regression coverage for the new Stage 2R R4/D1/D3/D4 scoring paths.
- Added `scripts/benchmark_local10_stage2r_impact.py` and local-10 v1.5.3 Stage 2R impact artifacts.
### Changed
- Updated Stage 2R measurement documentation from simple vocabulary overlap to repo-local consistency plus deterministic contradiction/staleness/workflow-support checks.
---
## [1.5.2] - 2026-05-01
### Added
- Added Stage 1 H1-H6 hype-claim penalties for clinical certainty, regulatory approval, autonomous replacement, breakthrough marketing, universal generalization, and perfect-accuracy language.
- Added Stage 1 R1-R5 responsibility signals for limitations sections, regulatory frameworks, clinical disclaimers, demographic-bias boundaries, and reproducibility provisions.
- Added `stage_1_rubric` JSON output and matching evidence-ledger detectors for the new Stage 1 scoring surface.
### Changed
- Moved `spec/` to local-only private material by ignoring it in Git and removing tracked spec files from the release tree.
---
## [1.5.1] - 2026-05-01
### Changed
- Promoted the active MICA memory layer to v1.5.1 snapshots and updated `memory/mica.yaml` to load the current archive, playbook, and lessons files.
- Updated release metadata, README badge/citation, and release validation defaults from v1.5.0 to v1.5.1.
### Added
- Added v1.5.1 memory provenance entries covering the post-v1.5.0 memory alignment commit and current release metadata.
- Added `MANIFEST.in` to bound source-distribution inputs and exclude generated audit/build/temp artifacts from release packaging.
- Added a stdlib package-build path used by release validation to avoid local setuptools frontend hangs in Python 3.14 environments.
---
## [1.5.0] - 2026-04-30
### Added
- Added `S4_license_restriction` evidence detection for non-commercial, research-only, academic-only, no-clinical-use, and related license/use-scope boundary language.
- Added `docs/API_CONTRACT_V1_5_DRAFT.md` documenting the draft local Python/CLI contract without declaring a stable external SDK.
- Added regression coverage for license restriction evidence and Stage 2R refactor score preservation.
### Changed
- Refactored `_score_stage_2r` into smaller helper functions without changing its scoring behavior or T0-T4 boundaries.
---
## [1.4.5] - 2026-04-30
### Added
- Added `stem_ai/provider_benchmark.py` for compact provider-packet and provider-response validation benchmark records.
- Added `scripts/provider_packet_benchmark.py` to export provider-budgeted packets, packet stats, packet summaries, and optional saved response-validation records without making provider API calls.
- Added `audits/benchmark-v1.4/` workspace documentation for provider response benchmark artifacts.
- Added regression coverage for provider benchmark packet summaries and response-validation records.
---
## [1.4.4] - 2026-04-30
### Added
- Added provider-budgeted advisory packets capped to 40 ranked evidence findings for practical Gemini/Qwen-style context budgets.
- Added `allowed_finding_ids` to advisory input packets so providers can copy exact citation IDs instead of shortening detector names.
- Added `provider_prompt_contract` guidance documenting strict JSON output, exact citation-copying, no score override, and clinical/regulatory claim boundaries.
- Added regression and release validation coverage for deterministic provider packet budgets and citation allowlists.
### Changed
- `--advisory packet` now emits the provider-budgeted packet profile by default while preserving full audit JSON separately.
---
## [1.4.3] - 2026-04-30
### Added
- Added `stem_ai/advisory_response.py` for validating provider-produced advisory JSON files against the current audit evidence ledger.
- Added `stem audit ... --advisory-response FILE` to validate external Gemini/OpenAI/Claude/Ollama/local-model style JSON responses without making API calls.
- Added response contracts with source hash, byte count, JSON parser marker, no-network flag, and no citation-repair flag.
- Added regression coverage for valid provider responses, malformed provider responses, parse errors, and CLI response-file validation.
### Changed
- Removed v1.4.2 mock harness modes from the public CLI surface; v1.4.3 uses real response-file validation instead of mock/stub advisory modes.
---
## [1.4.2] - 2026-04-30
### Added
- Added `stem_ai/advisory_adapters.py` as a deterministic no-network adapter contract harness.
- Added mock advisory modes: `mock-valid`, `mock-invalid`, `mock-error`, and `mock-timeout`.
- Added standard adapter error envelopes for adapter failures and timeout simulations.
- Added regression coverage proving malformed advisory output remains invalid and is not citation-repaired.
---
## [1.4.1] - 2026-04-30
### Added
- Added provider-neutral advisory provider registry and secret-free environment configuration loader.
- Added `--advisory packet` to export a bounded advisory input packet for future cloud, OpenAI-compatible, local-server, and local-runtime adapters without calling any AI API.
- Added standalone `{stem}_advisory_input.json` output with provider handoff metadata, registry status, evidence citation policy, and sanitized evidence ledger.
- Added release validation and regression coverage for advisory packet export and secret-free provider metadata.
---
## [1.4.0] - 2026-04-30
### Added
- Added provider-neutral `ai_advisory` contract support with offline validation via `stem audit <repo> --advisory validate`.
- Added `stem_ai/advisory_contract.py` for advisory input packet construction, citation extraction, citation validation, prohibited-claim checks, and deterministic no-AI advisory output.
- Added ASDP-inspired advisory schema and compile notes under `spec/asdp/` and `docs/asdp/`.
- Added v1.4.0 planning document for evidence-bound AI advisory, provider adapters, ASDP contract compilation, and local Qwen/Kimi/Unsloth future paths.
- Added tests ensuring advisory input omits raw snippets by default, rejects unknown citations, rejects score overrides, rejects clinical/regulatory claims, and surfaces advisory validation in CLI/Markdown/explain output.
### Changed
- Established the provider-neutral advisory contract surface that later converged into the stable local CLI result schema family.
---
## [1.3.2] - 2026-04-30
### Added
- Added `stem_ai/reasoning_model.py` as a deterministic diagnostic layer over the evidence ledger.
- Added `reasoning_model` JSON output with evidence budget, confidence envelope, lane coherence, uncertainty budget, evidence-risk gate, and benchmark alignment function support.
- Added reasoning diagnostics to Markdown and `--explain` outputs without changing the established final score.
- Added regression coverage for deterministic token counting, S4-null lane coherence handling, benchmark alignment metrics, and final-score non-overwrite behavior.
### Changed
- Updated release validation defaults to target v1.3.2.
---
## [1.3.1] - 2026-04-30
### Fixed
- Improved local-10 benchmark alignment by detecting clinical-adjacent skill-catalog surfaces such as AutoDock, nnU-Net, pydicom, drug docking, and medical imaging.
- Excluded obvious placeholder/test credential values from the C1 penalty while keeping them visible in the evidence ledger as non-applicable evidence.
### Added
- Added local-10 control benchmark summaries and before/after comparison artifacts for the CA/C1 precision patch.
---
## [1.3.0] - 2026-04-30
### Added
- Added v1.3 evidence ledger output with stable POSIX `finding_id` values, detector metadata, source file, line, snippet, match type, explanation, and optional metadata.
- Added stdlib AST observation summary (`ast_signal_summary`) for assertion tests, seed settings, argparse CLI surfaces, docstrings, annotations, portable model loading, syntax errors, and fail-open handlers.
- Added Stage 4 Reproducibility & Replication Evidence as a separate lane with `replication_score`, `replication_tier`, and `stage_4_rubric`.
- Added deterministic Stage 4 detectors for containers, Makefile reproduction/evaluation targets, environment/lock files, exact pins/hashes, README reproducibility sections, checksum files, dataset/model artifact references, `CITATION.cff`, CLI evidence, seed evidence, and runnable examples.
- Added `stem audit ... --explain`, which writes a plain-text proof trace grouped by detector and includes full `finding_id` values for citation by future AI layers.
- Added v1.3 planning documents for evidence-ledger contracts, Stage 4, benchmark methodology, and deferred v1.3.1 reasoning model candidates.
- Added `audits/benchmark-v1.3/` template workspace for the 30-repository benchmark manifest, JSONL results, tier alignment summary, and false-positive/false-negative log.
### Changed
- Split detector implementation into focused modules: surface detectors, AST detectors, Stage 4 detectors, shared detector utilities, shared patterns, and evidence dataclasses.
- Kept AST and Stage 4 outputs observation-only for v1.3.0; the established final score formula remains unchanged.
- Updated README to describe Stage 4, `--explain`, AST observation, replication tiers, and evidence-ledger artifacts.
### Fixed
- Closed evidence-ledger coverage gaps for scored Stage 3 and C1-C4 components.
- Improved AST detection for direct `ArgumentParser()` imports and mock-style assertion calls.
- Removed duplicated detector constants from scanner internals by centralizing shared patterns.
- Reduced nested complexity in explain rendering, AST visiting, dependency-pinning detection, and fallback PDF page-stream generation; local slop scan reports all Python files clean.
---
## [1.2.0] - 2026-04-30
### Changed
- Repositioned as a **deterministic evidence-surface scanner** rather than a trust auditor; README subtitle and Core Features updated accordingly.
- T0βT4 labels changed from trust verdicts to **triage / review-priority tiers** with explicit scope statements.
- Added **"What STEM Actually Measures"** table to README β each score component now documents its physical detection method.
- Renamed "Stage 1 β README Intent Analysis" to "Stage 1 β README Evidence Signal" in PDF reports.
- `Measurement Boundary` section in README replaces `Boundary` and explicitly states that scores reflect observable signals, not clinical safety or author intent.
- `pyproject.toml` description updated; `[demo]` extra dependencies cleaned up (removes outdated pins).
### Fixed
- Removed bare `treatment` from CA-DIRECT terms; replaced with phrase-level patterns `treatment recommendation` and `treatment guidance` to reduce false positives on bioinformatics data-processing contexts.
- Removed bare `population` from B2 bias/limitations terms; the word alone is a false positive in population-genetics contexts.
### Added
- `measurement_basis` field added to JSON output documenting the detection method for each scored component.
---
## [1.1.3] - 2026-04-29
### Fixed
- Corrected Python dependency-pinning detection so loose ranges such as `>=`, `<=`, `~=`, `<`, and `>` no longer pass C2 as exact pins.
- Added deterministic CA severity classification for LOCAL_ANALYSIS (`CA-DIRECT`, `CA-INDIRECT`, `none`) and activated the T0 hard-floor cap for unbounded direct clinical claims.
- Added a T2 score cap for clinical-adjacent repositories that lack an explicit non-clinical/non-diagnostic boundary.
- Rebalanced Stage 3 scoring to normalize the full 80-point T/B rubric to 100, restoring attainable T3/T4 ranges.
- Fixed B1 max-score mismatch and added local B2 bias/limitations and B3 COI/funding evidence detection.
- Removed repository-specific deprecated-path scanning and replaced it with generic deprecated/legacy/archive directory scanning.
- Hardened fail-open exception detection for CRLF code paths.
- Prevented fallback PDF text overflow when reportlab is unavailable.
- Bounded reportlab style cache growth for long-running Gradio sessions.
- Added CLI `--version` and safer Gradio report-level fallback handling.
- Made the skill validator select the latest core spec and MICA archive instead of hard-coding v1.1.2.
---
## [1.1.2] - 2026-03-27
### Added
- PATCH-46: MICA v0.2.0 memory layer β `memory/` directory with composition contract,
archive (18 IMMUTABLE rules as design_invariants), session playbook, and lessons document
(10 failure modes from L-001 through L-010)
- `memory/mica.yaml` β MICA v0.2.0 composition contract (mode: protocol_evolution)
- `memory/stem-ai.mica.v1.1.2.json` β machine-checkable governance archive
- `memory/stem-ai-playbook.v1.1.2.md` β session protocol and rubric drift guard
- `memory/stem-ai-lessons.v1.1.2.md` β failure mode history (10 lessons from 33 patches)
- PATCH-47: MICA initialization step added to SKILL.md loading order (Step 0) and CORE spec Section 8.2 Execution Instruction
- DEV.to draft for STEM BIO-AI v1.1.2 memory contract explanation
- Official v1.1.2 LOCAL_ANALYSIS audit artifact shape: `report.md` plus `experiment_results.json`
- Real public-repository audit output under `audits/fieldbioinformatics_v1_1_2/`
- Stage 2R: Repo-Local Consistency lane for LOCAL_ANALYSIS audits when external Stage 2 evidence is not collected
- Python CLI package with `stem audit <folder>` local scan command
- CLI output modes for 1-page brief and 3/5-page detailed Markdown, JSON, and PDF reports
- HuggingFace/Gradio `app.py` demo entry point using the same deterministic scanner
### Changed
- Canonical spec filename advanced to `spec/STEM-AI_v1.1.2_CORE.md`
- SKILL.md version updated to 1.1.2
- Public explanation shifted from synthetic evidence examples to a real audit-result JSON and verifier flow
### Fixed
- Post-release consistency cleanup applied to active package surfaces on 2026-04-27
- Active package surfaces aligned to STEM BIO-AI v1.1.2 and MICA v0.2.0
- Template references updated to the current canonical spec and audit report version
- Skill validator strengthened to detect template/spec/MICA drift before release
- `local_analysis_scan.sh` output description corrected to match actual stdout format
- Removed placeholder example audits and synthetic public evidence bundle from the official v1.1.2 surface
---
## [1.1.1] - 2026-03-26
### Fixed
- Canonical spec version alignment errors (`1.0.6` remnants removed from the 1.1.x package surface)
- Template and package references updated to the correct canonical spec filename
### Added
- Explicit statement of the relationship between technical audit and STEM BIO-AI
- Method/template wording clarifying technical audit as fact extraction and STEM BIO-AI as trust classification
### Changed
- Canonical spec filename advanced to `spec/STEM-AI_v1.1.1_CORE.md`
---
## [1.1.0] - 2026-03-26
### Changed
- **Architecture:** Single-file spec split into universal skill package (multi-file)
- **Name:** "Trust Audit Framework for Bio/Medical AI" -> "Trust Audit Framework for Bio/Medical AI Repositories"
- **Runtime:** Added AI CLI support alongside LLM-Native
### Added
- SKILL.md entry point (universal agent skill format, 16+ platforms)
- `spec/` directory for core rubric
- `discrimination/` directory for YES/NO example pairs
- `templates/` directory for institutional output (7 templates)
- `scripts/` directory for automation (3 shell scripts)
- `references/` directory for lookup tables
- `examples/` directory for real audit examples
- `.github/workflows/` CI/CD pipelines (3 workflows)
- README.md, CONTRIBUTING.md, LICENSE, .gitignore
- GitHub-ready repository structure
### Carried Forward (from 1.0.6)
- All 43 patches (PATCH-1 through PATCH-43)
- All 19 self-validation checks
- 4 execution modes (LOCAL_ANALYSIS, FULL, SEARCH_ONLY, MANUAL)
- Dual-path TEXT/CODE rubric
- CA 3-tier severity (DIRECT, INDIRECT, PLANNED)
- C1-C4 code integrity items
- Governance overlay (Stage 3G) with generic terminology
- T4 PENDING denominator = 80 (corrected)
- INSUFFICIENT_DATA split (NASCENT / STALE)
- CA-DIRECT redistribution guardrail
---
## [1.0.6] - 2026-03-22
### Added
- PATCH-27: LOCAL_ANALYSIS execution mode
- PATCH-28: Dual-path rubric (TEXT_PATH / CODE_PATH)
- PATCH-29: C1-C4 code-level integrity items
- PATCH-30: CLINICAL_ADJACENT 3-tier severity
- PATCH-31: CA detection dual-path (import scan + keyword scan)
- PATCH-32: T4 PENDING denominator corrected (85 -> 80)
- PATCH-33: INSUFFICIENT_DATA label split (NASCENT / STALE)
- PATCH-34: Stage 2 S2-0 social evidence auto-fetch
- PATCH-35: FULL MODE fetch failure per-item fallback
- PATCH-36: Stage 3G activation strengthened (artifact required)
- PATCH-37: Governance terminology abstracted (generic terms)
- PATCH-38: Score Matrix inline arithmetic mandatory
- PATCH-39: T2 discrimination examples
- PATCH-40: Auditor affiliation field
- PATCH-41: CHECK 17-19 (C1-C4 gating, CA severity, dual-path)
- PATCH-42: C1 env-var fallback pattern detection
- PATCH-43: Mode comparability notice + self-audit advisory
---
## [1.0.5] - 2026-03-22
### Added
- PATCH-15: Governance Overlay lane (Stage 3G)
- PATCH-16: Base tier preserved, overlay advisory only
- PATCH-17: G1-G5 rubric
- PATCH-18: Remediated target reading order
- PATCH-19: Dual output (Base Tier + Overlay Verdict)
- PATCH-20: CHECK 12-16
- PATCH-21: H1-H6 discrimination examples
- PATCH-22: B3 COI 3-tier expansion
- PATCH-23: Execution order fix (DERIVED-3 before Stage 3)
- PATCH-24: Procurement Threshold Note
- PATCH-25: N/A redistribution observation
- PATCH-26: G1-G5 discrimination examples
---
## [1.0.4] - 2026-03-19
### Added
- PATCH-9: Author Domain Context (informational, zero score impact)
- PATCH-10: DERIVED-1 expiry_date
- PATCH-11: DERIVED-2 audit_branch
- PATCH-12: DERIVED-3 trajectory_signal
- PATCH-13: Non-English README confidence flag
- PATCH-14: Trajectory modifier (+/-5 pts Stage 3)
---
## [1.0.3] - 2026-03-19
### Changed
- Weighted formula: S1x0.40, S2x0.20, S3x0.40
- T0_HARD_FLOOR replaces RP3
- CLINICAL_ADJACENT trigger list expanded to 60+
- T4 PENDING minimum activity threshold
- Mandatory disclaimer block
---
## [1.0.2] - 2026-03-19
### Added
- NASCENT_REPO flag + baseline 50 + T4 PENDING
- CLINICAL_ADJACENT flag + active deduction table
- Live-fire audit: jaechang-hits/scicraft
---
## [1.0.1] - 2026-03
### Changed
- Narrative scoring -> rubric-based point checklists
- Hard STOP -> MANUAL mode with partial audit fallback
- Biological Integrity checklist (B1-B3) added
---
## [1.0.0] - 2026-03
### Added
- Initial 3-stage evaluation concept
- README Dissection, Cross-Platform Verification, Code Debt Audit
- JSON + Markdown output format
|