Skip to content

Add fail-closed supply-chain release controls (TASK-13013.7) - #2869

Open
rmusser01 wants to merge 137 commits into
devfrom
codex/task-13013-7-supply-chain-design
Open

rmusser01 wants to merge 137 commits into
devfrom
codex/task-13013-7-supply-chain-design

Conversation

@rmusser01

@rmusser01 rmusser01 commented Sep 5, 2026

Copy link
Copy Markdown
Owner

Change summary

This PR strengthens release safety with reproducible Python and Bun dependencies, digest-pinned production images, and validated SBOM and vulnerability evidence. It gates publication on scans of the exact release artifacts, adds provenance verification and operator documentation, and prevents release retries from overwriting existing version tags. Known vulnerabilities remain explicitly blocking—no security exceptions or bypasses were introduced.

The Change summary above was supplied by the human requester and is retained verbatim.

Current verified checkpoint — 2026-09-06

Candidate snapshot amendment e2af1cf3b8 is rebased on dev 83af7e5dcf, with full-image verification recorded in 98d47e8078. All 26 rebased patches were preserved unchanged. Post-rebase verification: 266 tests passed across Supply Chain and release workflow/documentation contracts, one opt-in skip, four existing warnings per run; scoped Black/Ruff/Bandit clean; no newly uncovered shard tests. Independent snapshot review approved spec compliance and quality with no blocking findings. The full fixed-snapshot candidate built successfully as sha256:0f82ed8871ebdd3e6c5e8d5ba0a4278c253f65f7d4b6d42420dab7669117b6a4. It passes all synthetic media probes with no unapproved capability loss. All 785 build/179 runtime package versions and configure flags match the earlier candidate; builder/runtime signed repository evidence is identical. Fresh scans bind to config 0d6ba63550adb7d396b647d782c9921dc3c3e1869dbc3c1f850be75ac185adc7 and retain the same blockers: Trivy 73 High/Critical OS matches, Grype 92 High/Critical matches overall, and incomplete source-built coverage. Production images and security admission are unchanged. Historical validation entries below describe their stated earlier integrations, not a claim that all current GitHub checks pass.

The candidate-only FFmpeg 9 recipe authenticates upstream source, builds pinned libplacebo and its pinned Vulkan headers, derives exact runtime package versions, and includes a standard-library compatibility evaluator. The requester accepted the upstream Sonic, explicit V4xx codec, old HLS input protocol, and SDL/OpenGL output retirements alongside pp. The amended evaluator passes all synthetic media probes on the existing immutable candidate and records these observed retirements separately; no unapproved capability losses remain. HLS demuxing and the HLS output protocol are not retired. Trivy reports 73 High/Critical OS package findings and does not identify source-built FFmpeg/libplacebo; supplemental source-built coverage work is still underway. Production Dockerfiles, release selection, and vulnerability policy are unchanged. This PR is not merge-ready.

On published head 21227dd09e, Characters Harness and macOS E2E both pass; the earlier failure hypotheses were not implemented. Source and container security admission still fail. No new inline review comments were present at this checkpoint.

Supplemental digest-pinned Syft detects FFmpeg 9.0.1 from the exact candidate libraries. Grype with a fresh database reports zero FFmpeg matches, but 92 High/Critical candidate matches overall. A 7.1.5 positive control finds vulnerabilities but does not cover all earlier FFmpeg findings. Source review now maps all 17 original FFmpeg findings to fixes in the authenticated 9.0.1 source; CVE-2026-58049 remains an evidence-backed patch mapping without explicit CNA/vendor clearance. Libplacebo/static dependency identification and remaining OS/advisory reconciliation remain unresolved. Fixed dependency selection is not a claim of bit-identical binaries. No missing component or zero-match result is treated as a vulnerability waiver. The requester approved separate candidate-only qualification of the official util-linux backport (TASK-13013.7.7); source/patch authentication is recorded, with native package tests, ABI checks and independent review still pending. No package adoption or privileged mount test is authorized by that qualification.

Summary

  • Implements TASK-13013.7 under TASK-13013, including the deterministic critical-journey repairs tracked in TASK-13013.7.1 and TASK-13013.7.2.
  • Establishes pinned uv/Bun resolution, supported frontend dependencies, immutable scanner/tool/image identities, complete source/image SBOMs, and a fail-closed, narrowly scoped exception policy.
  • Builds and scans exact candidate digests before backend alias promotion, binds release evidence to those subjects, retains signed provenance, and publishes the draft GitHub Release last.
  • Keeps WebUI and Admin UI build-and-scan-only, without frontend registry publication.
  • Makes the local release helper create drafts and update/check the root-version lock offline; protects existing full-version tags on retries.

Validation

  • Expanded matrix on the d308a40871 integration: 1,079 passed, including source/release/deployment contracts, the newly merged summary modules, Character HTTP regressions and pinned Docker SBOM coverage. Final local interpreter garbage collection was unusually slow but completed with exit zero; no intervention was needed. This is not a claim that all live CI gates pass.
  • Regression tests added for policy, evidence, digest pinning, workflow ordering, release-helper behavior, and retry safety.
  • Earlier focused CI/supply-chain/deployment/release/Watchlists/PDF/EPUB suite: 898 passed locally at the previously failing test-order seed. SBOM merge/scan guards require successful prerequisites and honor cancellation. The schema guard covers cold and pre-warmed caches; disabling memoization still fails its warm-request assertion. The upstream PDF and EPUB tests are assigned on all five full-suite platforms; exhaustive/disjoint coverage checks remain intact.
  • Admin Webhooks status compatibility repair: 58 client/page tests, ESLint, typecheck and production build passed. The real-backend JWT suite passes 26 tests with one existing auth-project skip, including the unchanged previously failing Webhooks test. Only the documented object-valued delivery diagnostics extension is projected out; strict readiness validation remains unchanged. Independent review found no issues.
  • Final rebase onto dev 33d7f9f1da preserves all 14 patches unchanged. Four newly merged summary-test modules are added to the existing API shard on all five platforms; exhaustive/disjoint coverage assertions remain intact. Full-matrix evidence above is from the preceding integration; final-head CI remains required.
  • Final-integration verification: 515 CI/supply-chain tests and six Character HTTP regressions pass with exit zero, including pinned Docker SBOM generation. Pinned offline lock freshness and actionlint pass.
  • Scanner scratch repair: all four image helpers use private disk-backed temporary storage and clean up on success/failure. Eight regressions reproduced the old defect; all 31 workflow tests pass. The pinned container reproduced the old 512 MiB failure, then each repaired helper wrote 513 MiB successfully. Exact-image vulnerability admission still requires CI.
  • Character repair: six real-HTTP-to-adapter regression cases and 11 existing generation tests pass. Only unsupported neutral repetition penalties are omitted; meaningful values retain strict validation. Composer focus restores mobile toolbar navigation without changing viewport or diagnostic assertions. Independent browser verification passes five cases with one existing optional failure-model skip. Review reports no actionable findings.
  • Universal Transformers resolution now uses 5.16.1 with a 5.10.0 security floor. Required Darwin Docling variants remove the actual transitive upper bound; published MLX metadata was not the constraint. Sixteen dependency contracts, pinned offline lock freshness, and CycloneDX schema validation pass. A fresh pinned Trivy scan confirms the Transformers finding is removed. Darwin model execution has not been exercised.
  • Strict MkDocs build and published-doc parity passed.
  • Pinned uv lock check and both frozen Bun installs passed; Bun lock hashes unchanged.
  • Bandit: zero findings in touched production Python scope; scoped Ruff, actionlint, public/private boundary, and private-key checks passed.
  • Isolated rebased wheel build, Twine, backend-only artifact checks, and public-profile module/schema/fixture inclusion passed.
  • Regenerated Python CycloneDX SBOM validated with the pinned CLI and rescanned with pinned Trivy.
  • All live source/image admission gates pass.
  • Required GitHub checks and automated/human reviews pass on the final PR head.

Earlier frontend and critical-journey verification, exact commands, intentional skips, and inherited failures are recorded in the Backlog tasks. The full repository suite and all frontend journeys have not been rerun after the final rebase; CI must validate the resulting integration.

Known blockers — not merge-ready

  • The verified PyJWT migration removed python-jose and ecdsa from the resolved graph and exact-image evidence; ecdsa is no longer an open finding. ChromaDB and NLTK findings remain blocking pending valid disposition. The canonical exception list remains empty. The earlier Transformers/MLX constraint explanation is superseded by the verified Docling resolution above.
  • Complete backend scans and extended runtime evidence now exist for published head 4415afe0d4 in run 34044783356; all three backend images pass the UUID isolation and no-listener checks, with bounded Perl/systemd facts recorded. These observations are not vulnerability waivers. Source/image admission still fails on remaining findings, and fresh current-head checks remain required. The last complete frontend scans reported 56 package/CVE findings each. Digest pinning records identity, not a clean scan or deployment approval.
  • The exact WebUI Docker image built successfully at preceding head 363fc53 within unchanged 600/900 KB budgets (563.1 KB shared, 779.4 KB route). Its scan rejected the candidate under vulnerability policy. Fresh final-head admission remains required; no failed gate was bypassed.
  • Applications SBOM generation passes in CI. The downstream merge/scan scheduling repair was confirmed in live run 33973611172: all three generators and merge passed; scanning executed and failed at source-python-root vulnerability policy as required. Fresh final-head admission remains required. Character Chat now passes the local real-backend journeys described above; live final-head confirmation remains pending. A preceding critical E2E retry also recorded a Turbopack crash and a Watchlist HTTP 500 after Watchlist passed on the first run. No result or vulnerability gate was weakened.
  • Earlier broad Admin unit testing recorded inherited expectation failures; see TASK-13013.7 for the precise scope and evidence.

Do not merge or publish a release until the required checks, actionable reviews, and release-admission blockers are genuinely resolved. No auto-merge is enabled by this PR.

Operator references

Certification is limited to linux/amd64. Third-party references have identity/SBOM/scan evidence, not project-authored provenance.

UX / Watchlists review

The child-task changes repair deterministic critical-journey terminal states, mock fixtures, and persisted Watchlist briefing behavior. Recorded journey evidence lives with TASK-13013.7.1. This PR does not claim a fresh full UX, accessibility, scale, or cross-client parity audit; applicable CI and review remain required.

Risk & rollback

  • Risk: High; this changes dependency resolution, production build inputs, and release admission.
  • Before merge, keep release drafts and existing version digests intact. Failed candidates are not release aliases.
  • For deployed systems, use the existing digest-pinned, restore-backed production rollback procedure. Do not move or delete existing release version tags, loosen vulnerability policy, or use this PR as authority for a security exception.

Summary by cubic

Adds fail-closed supply-chain release controls (TASK-13013.7): Python and Bun dependencies are pinned, production images are digest-pinned, and releases publish only after scanning and verifying signed provenance of the exact candidate digests. Known Critical/High findings still block admission.

  • Release retries no longer overwrite existing version tags; WebUI and Admin UI stay build-and-scan-only, and the Admin UI accepts the webhook delivery-status extension.
  • Release helpers require uv 0.12.7 and refresh uv.lock offline before staging.
  • Workspace SBOM identities derive from tracked manifests, so clean-checkout scans no longer depend on child locks or node_modules.
  • JWT consumers migrate to PyJWT, removing python-jose and ecdsa while preserving legacy tokens, OIDC keys, and RSA verification.
  • Adds candidate-only FFmpeg 9, util-linux, Expat, and native frontend runtime evaluations with pinned Debian/Ubuntu snapshots; none is a production image.
  • Authenticates Expat 2.8.4 for the Trixie system library and CPython's bundled parser, qualifies both in isolated native workers, and assembles the combined dual-copy candidate with test wheels bound to reviewed uv.lock entries; scanner qualification remains open.
  • Frontend candidates render from canonical recipes, preserve builders, and compare exact scanner reports on frozen databases; a throwaway Ubuntu 24.04 base drops the frontend OS findings but does not waive the remaining blockers. Candidate fixtures now supply ephemeral Admin signing config, resolve sharp from Next, use runner-owned Grype cache with private temporary storage, and close the PID1 health stub on SIGTERM so the controlled backend exits within the qualification bound.
  • Prepares candidate-only FFmpeg wheel remediation (TASK-13013.7.12): hash-bound source inputs for rebuilding av and opencv-python against a repaired FFmpeg 8.x baseline; no rebuild is implemented.
  • Pins patched @xmldom/xmldom, overrides nested Prism and OpenTelemetry core so EPUB, highlighting, and tracing dependencies can't retain affected releases.
  • Notes workflow journeys now run as returning users so first-visit tutorials don't interfere.
  • Replaces passlib with libpass 1.9.3 for MCP password handling, keeping PBKDF2-SHA256 hashes and interop.
  • Renames structured-response/workflow model fields from schema to schema_definition via Pydantic alias so wire keys are unchanged, raising the Pydantic floor to >=2.11.7.
  • Cleans test warnings: removes the obsolete pytest plugins option, materializes supply-chain profile params, asserts the intentional duplicate-archive warning, and switches workflow base models to ConfigDict.
  • Prepares the candidate-only NLTK 3.10.3 backport source and verifies its wheel; qualification remains incomplete.

Known blockers

  • Remaining ChromaDB/NLTK and image findings stay blocking; the exception list remains empty.
  • Keep release drafts and existing version digests intact; for deployed systems use the digest-pinned, restore-backed rollback and do not loosen vulnerability policy.

Migration

  • Production compose files now require image references as version tag plus @sha256 digest.

Written for commit 9a6440f. Summary will update on new commits.

Review in cubic

@coderabbitai

coderabbitai Bot commented Sep 5, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 99160983-0fff-4bb7-8e87-01284119fa13

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Enforce fail-closed supply-chain release admission

✨ Enhancement 🐞 Bug fix 🧪 Tests 📝 Documentation ⚙️ Configuration changes 🕐 40+ Minutes

Grey Divider

AI Description

• Gates publication on digest-bound SBOM, vulnerability, policy, and provenance evidence.
• Pins production dependencies, tools, base images, and deployment image references.
• Makes release retries deterministic while repairing critical frontend journeys.
Diagram

graph TD
  A["Draft release"] --> B["Source admission"] --> C["Candidate images"] --> D["Trivy policy"] --> E["Evidence manifest"] --> F["Version aliases"] --> G["Floating aliases"] --> H["Published release"]
Loading
High-Level Assessment

The staged candidate-admission approach is appropriate because it scans the exact promoted subjects, centralizes fail-closed evidence validation, and preserves publication ordering. A simpler tag-triggered release or independent scanner actions would provide weaker subject binding and retry guarantees; adopting a larger external supply-chain framework would not remove the repository-specific image-set, exception, and frontend-publication policies.

Files changed (114) +13579 / -1978

Enhancement (5) +1183 / -38
production_preflight.pyReject noncanonical production image identities +39/-38

Reject noncanonical production image identities

• Requires every application and reference image to use a non-latest tag plus lowercase full SHA-256 digest.

Helper_Scripts/Deployment/production_preflight.py

__init__.pyInitialize supply-chain helpers +1/-0

Initialize supply-chain helpers

• Creates the package boundary for policy and release-evidence utilities.

Helper_Scripts/Supply_Chain/init.py

exception_policy.pyImplement fail-closed vulnerability exception evaluation +400/-0

Implement fail-closed vulnerability exception evaluation

• Strictly parses scoped, expiring approvals and independently classifies complete Trivy findings as blocking or excepted.

Helper_Scripts/Supply_Chain/exception_policy.py

release_evidence.pyAssemble and verify digest-bound release evidence +735/-0

Assemble and verify digest-bound release evidence

• Validates exact image sets, subjects, SBOMs, scans, decisions, provenance references, scanner freshness, and file checksums offline.

Helper_Scripts/Supply_Chain/release_evidence.py

release.pyCreate drafts with an offline lock refresh +8/-0

Create drafts with an offline lock refresh

• Stages uv.lock, requires reviewed uv, refreshes and checks it offline, and creates a draft GitHub Release.

Helper_Scripts/release.py

Bug fix (10) +157 / -33
PresentationStudioPage.tsxNarrow structured presentation result types +14/-3

Narrow structured presentation result types

• Introduces a verified structured-detail type before records enter the structured presentation path.

apps/packages/ui/src/components/Option/PresentationStudio/PresentationStudioPage.tsx

WatchlistsPlaygroundPage.tsxNormalize progressive Watchlist tab transitions +33/-1

Normalize progressive Watchlist tab transitions

• Maps hidden secondary tabs to their primary surface and expands the corresponding section automatically.

apps/packages/ui/src/components/Option/Watchlists/WatchlistsPlaygroundPage.tsx

api-assertions.tsAvoid consuming event-stream responses +4/-1

Avoid consuming event-stream responses

• Skips JSON parsing for SSE responses so API capture cannot hang on open streams.

apps/tldw-frontend/e2e/utils/api-assertions.ts

character-chat-phase6-surface.tsCentralize Character Chat session reveal logic +26/-0

Centralize Character Chat session reveal logic

• Reveals sessions through the appropriate desktop or compact layout controls after exiting focus mode.

apps/tldw-frontend/e2e/utils/character-chat-phase6-surface.ts

journey-helpers.tsClose completed ingest dialogs deterministically +14/-4

Close completed ingest dialogs deterministically

• Adds a terminal mode that requires visible close controls and closes completed ingestion before returning.

apps/tldw-frontend/e2e/utils/journey-helpers.ts

ChatPage.tsMake chat submission and extraction deterministic +28/-9

Make chat submission and extraction deterministic

• Avoids chrome fallback for structured messages and retries submission after resolving an explicit model requirement.

apps/tldw-frontend/e2e/utils/page-objects/ChatPage.ts

PromptsWorkspacePage.tsWait for prompt persistence before navigation +14/-11

Wait for prompt persistence before navigation

• Requires a new success notification, then reloads the workspace instead of manipulating editor portals.

apps/tldw-frontend/e2e/utils/page-objects/PromptsWorkspacePage.ts

config.pyMatch multimodal text safely +11/-4

Match multimodal text safely

• Extracts only string text parts from multimodal messages and rejects malformed content without coercion.

mock_openai_server/mock_openai/config.py

Watchlists_DB.pyReset feed validators when a source URL changes +12/-0

Reset feed validators when a source URL changes

• Clears ETag, modification, deferral, and unchanged counters so replacement feeds are fetched immediately.

tldw_Server_API/app/core/DB_Management/Watchlists_DB.py

__init__.pyPackage embedding worker services +1/-0

Package embedding worker services

• Ensures namespace discovery includes the embedding worker entrypoint in built distributions.

tldw_Server_API/app/core/Embeddings/services/init.py

Refactor (2) +7 / -7
DocumentationPage.tsxPreserve documentation import typing +4/-4

Preserve documentation import typing

• Casts Vite glob results to the shared import map for compatibility with the updated toolchain.

apps/packages/ui/src/components/Option/Documentation/DocumentationPage.tsx

presentation-studio-standalone-html.security.spec.tsTighten security instrumentation typing +3/-3

Tighten security instrumentation typing

• Adds explicit extension-like object types compatible with the updated TypeScript dependency baseline.

apps/tldw-frontend/e2e/workflows/presentation-studio-standalone-html.security.spec.ts

Documentation (20) +3947 / -47
task-2a-streaming-report.mdRecord streaming journey validation +257/-0

Record streaming journey validation

• Documents Task 2A investigation, repairs, commands, results, and retained evidence.

.superpowers/sdd/2026-08-30-software-supply-chain-release/task-2a-streaming-report.md

task-2b-ingest-modal-fix-round-1-evidence.mdCapture ingest modal repair evidence +101/-0

Capture ingest modal repair evidence

• Records focused evidence for the first terminal ingest modal repair round.

.superpowers/sdd/2026-08-30-software-supply-chain-release/task-2b-ingest-modal-fix-round-1-evidence.md

task-2b-ingest-modal-report.mdReport ingest modal journey readiness +91/-0

Report ingest modal journey readiness

• Summarizes the terminal modal failure, deterministic close behavior, and validation outcome.

.superpowers/sdd/2026-08-30-software-supply-chain-release/task-2b-ingest-modal-report.md

task-2c-flashcard-mock-evidence.mdCapture flashcard mock verification evidence +266/-0

Capture flashcard mock verification evidence

• Documents deterministic flashcard generation, grounding, and mock-provider validation.

.superpowers/sdd/2026-08-30-software-supply-chain-release/task-2c-flashcard-mock-evidence.md

task-2c-flashcard-mock-report.mdReport flashcard journey repairs +164/-0

Report flashcard journey repairs

• Summarizes isolated deck handling and grounded mock response improvements.

.superpowers/sdd/2026-08-30-software-supply-chain-release/task-2c-flashcard-mock-report.md

task-2d-watchlist-seed-report.mdReport persisted Watchlist seed design +60/-0

Report persisted Watchlist seed design

• Documents the transition from route mocks to owned, deterministic persisted Watchlist fixtures.

.superpowers/sdd/2026-08-30-software-supply-chain-release/task-2d-watchlist-seed-report.md

task-2e-phase6-fix-round-1-evidence.mdCapture Phase 6 journey repair evidence +119/-0

Capture Phase 6 journey repair evidence

• Records focused evidence for Character Chat surface reachability fixes.

.superpowers/sdd/2026-08-30-software-supply-chain-release/task-2e-phase6-fix-round-1-evidence.md

task-2e-phase6-readiness-report.mdReport Phase 6 readiness +178/-0

Report Phase 6 readiness

• Summarizes responsive Character Chat journey behavior, checks, and remaining boundaries.

.superpowers/sdd/2026-08-30-software-supply-chain-release/task-2e-phase6-readiness-report.md

README.mdDocument admitted image publication boundaries +24/-9

Document admitted image publication boundaries

• Explains exact-digest release admission, backend-only publication, frontend scan-only handling, and reference inventory ownership.

Dockerfiles/README.md

Production_Reference_Deployment.mdDocument immutable production image deployment +33/-9

Document immutable production image deployment

• Adds the reviewed reference-image inventory, digest semantics, supply-chain gate, and current certification blockers.

Docs/Deployment/Production_Reference_Deployment.md

PyPI_Publishing.mdDocument reproducible attested PyPI publishing +62/-12

Document reproducible attested PyPI publishing

• Describes locked builds, checksum handoff, trusted publishing, PEP 740 verification, and source admission.

Docs/Development/PyPI_Publishing.md

Release_Process.mdDocument draft-first verified releases +59/-7

Document draft-first verified releases

• Updates the operator flow for offline lock refresh, manual admission dispatch, safe retry behavior, and publish-last ordering.

Docs/Development/Release_Process.md

Software_Supply_Chain.mdAdd the supply-chain operations runbook +290/-0

Add the supply-chain operations runbook

• Defines pinned tools, locks, SBOMs, image identities, exceptions, evidence verification, promotion, and provenance procedures.

Docs/Development/Software_Supply_Chain.md

Production_Reference_Deployment.mdPublish updated production deployment guidance +33/-9

Publish updated production deployment guidance

• Mirrors the source deployment guide's digest inventory and supply-chain certification requirements.

Docs/Published/Deployment/Production_Reference_Deployment.md

CHATTERBOX_SETUP.mdClarify registry-backed Chatterbox dependencies +5/-0

Clarify registry-backed Chatterbox dependencies

• Documents that the source-only Russian stress package is excluded from published metadata and deterministic locks.

Docs/STT-TTS/CHATTERBOX_SETUP.md

2026-08-30-software-supply-chain-release.mdAdd the supply-chain implementation plan +1378/-0

Add the supply-chain implementation plan

• Records the phased implementation, validation, release ordering, and critical-journey repair plan.

Docs/superpowers/plans/2026-08-30-software-supply-chain-release.md

2026-08-30-software-supply-chain-release-design.mdAdd the supply-chain release design +685/-0

Add the supply-chain release design

• Defines security invariants, artifact identities, exception policy, evidence model, and operator workflow.

Docs/superpowers/specs/2026-08-30-software-supply-chain-release-design.md

profile.mjsDocument certification profile contracts +15/-0

Document certification profile contracts

• Adds JSDoc input definitions for isolated environments and fixed child commands.

apps/tldw-frontend/scripts/skills-certification/profile.mjs

task-13013.7 - Close-dependency-and-software-supply-chain-release-gaps.mdUpdate TASK-13013.7 delivery status +57/-1

Update TASK-13013.7 delivery status

• Records implemented supply-chain controls, validation evidence, and unresolved vulnerability blockers.

backlog/tasks/task-13013.7 - Close-dependency-and-software-supply-chain-release-gaps.md

task-13013.7.1 - Restore-deterministic-critical-frontend-journeys.mdTrack deterministic critical-journey repairs +70/-0

Track deterministic critical-journey repairs

• Documents the scoped frontend journey failures, fixes, evidence, and completion criteria.

backlog/tasks/task-13013.7.1 - Restore-deterministic-critical-frontend-journeys.md

Other (77) +8285 / -1853
dependabot.ymlCover release dependency roots with Dependabot +94/-0

Cover release dependency roots with Dependabot

• Adds grouped weekly update policies for Bun workspaces, uv, and production Docker images.

.github/dependabot.yml

reference-images.jsonInventory immutable reference images +47/-0

Inventory immutable reference images

• Records versioned subject digests and linux/amd64 child manifests for six production dependencies.

.github/supply-chain/reference-images.json

release-evidence.schema.jsonDefine the release evidence manifest schema +122/-0

Define the release evidence manifest schema

• Requires scanner metadata, exact project and reference image sets, checksums, and a passing decision.

.github/supply-chain/release-evidence.schema.json

vulnerability-exceptions.jsonEstablish an empty canonical exception policy +4/-0

Establish an empty canonical exception policy

• Creates the versioned policy with no security exceptions or bypasses.

.github/supply-chain/vulnerability-exceptions.json

vulnerability-exceptions.schema.jsonConstrain vulnerability exception records +65/-0

Constrain vulnerability exception records

• Defines exact component, package, severity, approval, expiry, and renewal fields.

.github/supply-chain/vulnerability-exceptions.schema.json

container-build-check.ymlScan exact pull-request container candidates +193/-10

Scan exact pull-request container candidates

• Builds all five production images as local OCI archives, scans their exact subjects, and uploads checksummed admission evidence.

.github/workflows/container-build-check.yml

frontend-e2e-tiers.ymlIsolate critical E2E provider configuration +21/-2

Isolate critical E2E provider configuration

• Starts a deterministic mock OpenAI service and runs the backend with explicit authenticated test configuration.

.github/workflows/frontend-e2e-tiers.yml

publish-docker.ymlImplement verified Docker release publication +1191/-35

Implement verified Docker release publication

• Admits source, project images, and reference images before two-stage backend alias promotion and final draft publication. Frontend images remain build-and-scan-only, and retries cannot replace differing version digests.

.github/workflows/publish-docker.yml

publish-ghcr-main.ymlGate main image aliases on exact candidate scans +206/-41

Gate main image aliases on exact candidate scans

• Builds a unique backend candidate, captures provenance and scan evidence, then promotes main aliases only after admission.

.github/workflows/publish-ghcr-main.yml

publish-pypi.ymlPublish checked and attested Python distributions +114/-62

Publish checked and attested Python distributions

• Adds source admission, locked release tooling, distribution checksums, and explicit trusted-publishing attestations.

.github/workflows/publish-pypi.yml

pypi-package.ymlBuild PyPI artifacts from locked tooling +45/-11

Build PyPI artifacts from locked tooling

• Uses pinned uv and the release dependency group, builds without isolation, and retains checksums with the artifacts.

.github/workflows/pypi-package.yml

sbom.ymlCreate a reusable fail-closed source SBOM gate +697/-202

Create a reusable fail-closed source SBOM gate

• Generates complete locked Python, applications, and Admin UI SBOMs with pinned tools, validates and merges them, then scans and evaluates exact policy decisions.

.github/workflows/sbom.yml

.gitignoreTrack the universal Python lock +0/-1

Track the universal Python lock

• Removes uv.lock from ignored paths so the production resolution can be versioned.

.gitignore

Dockerfile.admin-uiBuild Admin UI from pinned Node and Bun images +12/-3

Build Admin UI from pinned Node and Bun images

• Uses Bun only for frozen installation, runs Next under Node 24, and removes npm from the runtime image.

Dockerfiles/Dockerfile.admin-ui

Dockerfile.audio_gpu_workerLock and minimize the audio worker image +48/-14

Lock and minimize the audio worker image

• Introduces pinned multi-stage Python builds, installs the uv-locked environment, and removes build tooling from runtime.

Dockerfiles/Dockerfile.audio_gpu_worker

Dockerfile.prodBuild the application from the uv lock +26/-13

Build the application from the uv lock

• Pins Python and uv images, synchronizes the non-editable production environment, and strips runtime package managers.

Dockerfiles/Dockerfile.prod

Dockerfile.webuiBuild WebUI with pinned supported runtimes +16/-5

Build WebUI with pinned supported runtimes

• Uses frozen Bun installation and Node 24 compilation while limiting Next build resources and removing runtime npm.

Dockerfiles/Dockerfile.webui

Dockerfile.workerCreate a locked minimal embedding worker +49/-28

Create a locked minimal embedding worker

• Replaces editable pip installation with a pinned uv multiplayer profile and a reduced multi-stage runtime.

Dockerfiles/Dockerfile.worker

docker-compose.production.ymlRequire digest-bound monitoring images +4/-4

Require digest-bound monitoring images

• Clarifies that application, Prometheus, Alertmanager, and Grafana inputs require version tags plus digests.

Dockerfiles/Monitoring/docker-compose.production.yml

docker-compose.production.ymlRequire digest-bound core service images +5/-5

Require digest-bound core service images

• Updates production Compose input errors to require readable version tags paired with SHA-256 digests.

Dockerfiles/docker-compose.production.yml

production.env.exampleAdd monitoring image inputs +3/-0

Add monitoring image inputs

• Adds Prometheus, Alertmanager, and Grafana references to the production environment template.

Dockerfiles/production.env.example

mkdocs.ymlMake documentation revision processing deterministic +1/-0

Make documentation revision processing deterministic

• Disables parallel processing in the revision-date plugin.

Docs/mkdocs.yml

install_chatterbox_deps.pyAlign optional Chatterbox dependencies +1/-3

Align optional Chatterbox dependencies

• Adds the supported Python marker for dicta-onnx and removes the source-only Russian package.

Helper_Scripts/install_chatterbox_deps.py

MakefileMake packaging checks independent of pip +3/-3

Make packaging checks independent of pip

• Checks required Python modules directly inside the selected locked environment.

Makefile

bun.lockRefresh the Admin UI dependency resolution +431/-458

Refresh the Admin UI dependency resolution

• Regenerates the independent Bun lock for the pinned Next, Sentry, lint, and transitive security baseline.

admin-ui/bun.lock

next.config.mjsDisable Next agent-rule generation +1/-0

Disable Next agent-rule generation

• Prevents Next tooling from generating repository instruction files.

admin-ui/next.config.mjs

package.jsonPin the supported Admin UI framework baseline +6/-5

Pin the supported Admin UI framework baseline

• Pins Next 16.3.3, Sentry, matching Next tooling, and the reviewed React hooks override.

admin-ui/package.json

package.jsonPin the extension Vite release +1/-1

Pin the extension Vite release

• Moves the extension to the nearest validated Vite 8.0.16 baseline.

apps/extension/package.json

package.jsonAdd workspace security overrides +10/-0

Add workspace security overrides

• Pins reviewed Playwright, XML, Ant Design, parser, temporary-file, test, and extension-tool releases.

apps/package.json

LatestBriefing.tsxExpose stable Watchlist repeat-action hooks +6/-1

Expose stable Watchlist repeat-action hooks

• Adds test identifiers for latest briefing actions and exact run inspection.

apps/packages/ui/src/components/Option/Watchlists/OverviewTab/LatestBriefing.tsx

WatchlistsPlaygroundPage.orientation-guidance.test.tsxTest progressive Watchlist tab normalization +21/-0

Test progressive Watchlist tab normalization

• Isolates view preferences and verifies direct Activity transitions reach the expanded Updates surface.

apps/packages/ui/src/components/Option/Watchlists/tests/WatchlistsPlaygroundPage.orientation-guidance.test.tsx

api-assertions.test.tsTest event-stream API capture behavior +67/-30

Test event-stream API capture behavior

• Verifies normal response parsing is awaited while SSE bodies are never consumed as JSON.

apps/tldw-frontend/tests/api-assertions.test.ts

e2e-page-object-contracts.guard.test.tsStrengthen critical journey contract guards +193/-127

Strengthen critical journey contract guards

• Pins chat, prompt, notes, Watchlist, fixture, and cleanup behaviors to deterministic UI and API contracts.

apps/tldw-frontend/tests/e2e-page-object-contracts.guard.test.ts

next-config-build-resources.test.tsTest configurable Next build resources +35/-0

Test configurable Next build resources

• Verifies explicit CPU limits enable Next worker and memory optimizations.

apps/tldw-frontend/tests/next-config-build-resources.test.ts

pr-916-review-followups.test.tsAlign WebUI image contract expectations +2/-2

Align WebUI image contract expectations

• Updates assertions for Node-based validation and production compilation after frozen Bun installation.

apps/tldw-frontend/tests/pr-916-review-followups.test.ts

playwright-grounded.txtAdd deterministic Playwright content +1/-0

Add deterministic Playwright content

• Provides a local document for token-scoped ingest, search, and RAG tests.

apps/tldw-frontend/e2e/fixtures/media/playwright-grounded.txt

local-success.jsonRoute critical prompts to grounded mock responses +35/-0

Route critical prompts to grounded mock responses

• Adds narrow high-priority patterns for flashcards, claim verification, and token-scoped Playwright RAG prompts.

apps/tldw-frontend/e2e/onboarding-uat/mock-openai/configs/local-success.json

flashcard-claim-verdict.jsonAdd a grounded flashcard verdict response +20/-0

Add a grounded flashcard verdict response

• Provides deterministic JSON accepted by the artifact claim verifier.

apps/tldw-frontend/e2e/onboarding-uat/mock-openai/responses/chat/flashcard-claim-verdict.json

flashcards.jsonAdd deterministic generated flashcards +20/-0

Add deterministic generated flashcards

• Provides parser-compatible flashcard content for the critical journey.

apps/tldw-frontend/e2e/onboarding-uat/mock-openai/responses/chat/flashcards.json

playwright-grounded.jsonAdd a grounded Playwright answer +20/-0

Add a grounded Playwright answer

• Provides the deterministic response expected by local RAG and chat journeys.

apps/tldw-frontend/e2e/onboarding-uat/mock-openai/responses/chat/playwright-grounded.json

quick-ingest-terminal-close.spec.tsTest terminal ingest close safety +66/-0

Test terminal ingest close safety

• Verifies terminal dialogs use visible controls and never fall back to Escape.

apps/tldw-frontend/e2e/quick-ingest-terminal-close.spec.ts

character-chat-phase6-surface.test.tsTest Character Chat session reachability +80/-0

Test Character Chat session reachability

• Covers desktop rail restoration and compact focus-mode exit behavior.

apps/tldw-frontend/e2e/utils/tests/character-chat-phase6-surface.test.ts

character-chat-phase6.spec.tsUse responsive Character Chat controls in Phase 6 +31/-15

Use responsive Character Chat controls in Phase 6

• Exercises real focus, desktop rail, and compact Context controls before asserting session readiness.

apps/tldw-frontend/e2e/workflows/journeys/character-chat-phase6.spec.ts

ingest-evaluate-review.spec.tsVerify ingest completion before evaluation +27/-0

Verify ingest completion before evaluation

• Adds a regression journey proving the terminal ingest modal is closed before evaluation navigation.

apps/tldw-frontend/e2e/workflows/journeys/ingest-evaluate-review.spec.ts

ingest-search-chat.spec.tsIsolate the ingest-search-chat fixture +147/-31

Isolate the ingest-search-chat fixture

• Seeds tokenized local media, verifies exact RAG retrieval, and permanently cleans up owned records.

apps/tldw-frontend/e2e/workflows/journeys/ingest-search-chat.spec.ts

notes-flashcards.spec.tsIsolate generated flashcards in an owned deck +168/-118

Isolate generated flashcards in an owned deck

• Creates a unique deck, verifies saved cards target it, and cleans it up after the journey.

apps/tldw-frontend/e2e/workflows/journeys/notes-flashcards.spec.ts

watchlist-ingest-notify.spec.tsExercise a persisted Watchlist briefing journey +441/-388

Exercise a persisted Watchlist briefing journey

• Replaces broad route mocks with owned API resources, deterministic RSS feeds, exact run assertions, and strict cleanup.

apps/tldw-frontend/e2e/workflows/journeys/watchlist-ingest-notify.spec.ts

next.config.mjsControl Next production build resources +14/-0

Control Next production build resources

• Disables agent rules and supports validated CPU and webpack memory settings for constrained image builds.

apps/tldw-frontend/next.config.mjs

package.jsonPin supported WebUI framework dependencies +4/-4

Pin supported WebUI framework dependencies

• Pins Next 16.3.3, Sentry 10.46.0, matching Next tooling, and Vite 8.0.16.

apps/tldw-frontend/package.json

task2d-watchlist-feed.xmlAdd the initial deterministic Watchlist feed +15/-0

Add the initial deterministic Watchlist feed

• Provides a stable RSS item for persisted briefing generation.

apps/tldw-frontend/public/e2e/task2d-watchlist-feed.xml

task2d-watchlist-ui-run-feed.xmlAdd the Run Now Watchlist feed +15/-0

Add the Run Now Watchlist feed

• Provides a distinct stable RSS item for the UI-triggered occurrence.

apps/tldw-frontend/public/e2e/task2d-watchlist-ui-run-feed.xml

skills-certification-evidence.test.tsType skills evidence finalization tests +14/-3

Type skills evidence finalization tests

• Adds an explicit finalization contract while preserving teardown and artifact-sanitization coverage.

apps/tldw-frontend/scripts/tests/skills-certification-evidence.test.ts

skills-certification-lifecycle.test.tsType certification process lifecycle tests +55/-10

Type certification process lifecycle tests

• Defines process registry and signal-handler contracts for the upgraded frontend toolchain.

apps/tldw-frontend/scripts/tests/skills-certification-lifecycle.test.ts

skills-certification-profile.test.tsTighten certification environment typing +7/-5

Tighten certification environment typing

• Adds explicit child environment types and required test-mode inputs.

apps/tldw-frontend/scripts/tests/skills-certification-profile.test.ts

skills-certification-runner.test.tsType certification runner mocks +119/-9

Type certification runner mocks

• Introduces complete mock interfaces for commands, evidence, lifecycle, cleanup, and HTTP operations.

apps/tldw-frontend/scripts/tests/skills-certification-runner.test.ts

test_critical_e2e_response_contracts.pyTest critical mock response dispatch +424/-0

Test critical mock response dispatch

• Verifies flashcard, grounding, token-scoped RAG, multimodal, and fallback prompts select only their intended responses.

mock_openai_server/tests/test_critical_e2e_response_contracts.py

pyproject.tomlPin Python build and release tooling +24/-6

Pin Python build and release tooling

• Defines exact build requirements and a locked release group, constrains optional packages, and enables namespace discovery.

pyproject.toml

e2e-critical-config.txtAdd isolated critical E2E configuration +7/-0

Add isolated critical E2E configuration

• Provides a minimal canonical config root while leaving mock-provider credentials to workflow environment variables.

tldw_Server_API/Config_Files/e2e-critical-config.txt

test_frontend_e2e_critical_fixture_contract.pyGuard critical E2E fixture configuration +18/-0

Guard critical E2E fixture configuration

• Verifies the isolated critical config and deterministic provider wiring remain available.

tldw_Server_API/tests/CI/test_frontend_e2e_critical_fixture_contract.py

test_pypi_workflow_contracts.pyTest reproducible PyPI workflow controls +117/-54

Test reproducible PyPI workflow controls

• Guards source admission, pinned uv tooling, checksummed artifacts, trusted publishing, and pinned actions.

tldw_Server_API/tests/CI/test_pypi_workflow_contracts.py

test_release_workflow_contracts.pyTest candidate admission and promotion ordering +377/-90

Test candidate admission and promotion ordering

• Guards exact matrices, scan and provenance gates, publish-last ordering, and non-overwriting release retries.

tldw_Server_API/tests/CI/test_release_workflow_contracts.py

test_required_workflow_contracts.pyGuard deterministic critical E2E startup +36/-0

Guard deterministic critical E2E startup

• Verifies mock-provider ordering, authenticated health checks, and isolated backend environment configuration.

tldw_Server_API/tests/CI/test_required_workflow_contracts.py

test_sbom_workflow_contracts.pyTest fail-closed source SBOM admission +278/-19

Test fail-closed source SBOM admission

• Guards pinned tools, complete roots, hardened execution, scanner freshness, checksums, policy evaluation, and final producer gating.

tldw_Server_API/tests/CI/test_sbom_workflow_contracts.py

test_llm_providers_readiness.pyTest provider readiness for critical journeys +49/-0

Test provider readiness for critical journeys

• Adds readiness coverage for the deterministic OpenAI-compatible provider configuration.

tldw_Server_API/tests/Chat_NEW/unit/test_llm_providers_readiness.py

test_production_reference_deployment_docs.pyValidate deployment inventory documentation +22/-4

Validate deployment inventory documentation

• Ensures source and published guides match the exact reference-image inventory and completed task boundaries.

tldw_Server_API/tests/Docs/test_production_reference_deployment_docs.py

test_release_docs_contract.pyValidate supply-chain operator documentation +103/-0

Validate supply-chain operator documentation

• Guards pinned tools, SBOM names, exception lifecycle, image boundaries, release evidence, and PyPI attestation guidance.

tldw_Server_API/tests/Docs/test_release_docs_contract.py

trivy-critical.jsonAdd a representative Critical finding +17/-0

Add a representative Critical finding

• Provides complete Trivy-shaped input for exact exception matching tests.

tldw_Server_API/tests/Supply_Chain/fixtures/trivy-critical.json

test_dependency_lock_contracts.pyTest deterministic dependency baselines +361/-0

Test deterministic dependency baselines

• Guards uv profiles, Bun importers and overrides, supported frontend releases, production Docker installs, and Dependabot ownership.

tldw_Server_API/tests/Supply_Chain/test_dependency_lock_contracts.py

test_exception_policy.pyTest fail-closed exception policy behavior +536/-0

Test fail-closed exception policy behavior

• Covers malformed input, duplicate fields, exact matching, expiry limits, renewal rules, stale exceptions, and component isolation.

tldw_Server_API/tests/Supply_Chain/test_exception_policy.py

test_image_pinning_contracts.pyTest immutable image identities +234/-0

Test immutable image identities

• Guards digest-pinned bases, reference manifests, supported runtimes, runtime minimization, and frontend build execution.

tldw_Server_API/tests/Supply_Chain/test_image_pinning_contracts.py

test_release_evidence.pyTest release evidence assembly and verification +421/-0

Test release evidence assembly and verification

• Exercises complete image sets, identity binding, scanner freshness, path safety, checksum tampering, publication boundaries, and CLI verification.

tldw_Server_API/tests/Supply_Chain/test_release_evidence.py

test_docker_production_reference.pyUpdate production Docker reference contracts +37/-5

Update production Docker reference contracts

• Extends container and Compose assertions for locked environments and digest-bound image inputs.

tldw_Server_API/tests/Utils/test_docker_production_reference.py

test_production_deploy.pyAlign deployment fixture image identity +1/-1

Align deployment fixture image identity

• Updates the deployment test fixture to use canonical tag-plus-digest syntax.

tldw_Server_API/tests/Utils/test_production_deploy.py

test_production_preflight.pyTest strict image preflight validation +89/-19

Test strict image preflight validation

• Covers every required image field, malformed identities, registry ports, monitoring inputs, and sanitized failures.

tldw_Server_API/tests/Utils/test_production_preflight.py

test_production_probe_contract.pyAlign probe fixtures with digest-bound images +4/-4

Align probe fixtures with digest-bound images

• Updates production probe contract inputs to satisfy the stricter immutable image format.

tldw_Server_API/tests/Utils/test_production_probe_contract.py

test_release_helper.pyTest draft creation and offline lock safety +68/-2

Test draft creation and offline lock safety

• Verifies uv.lock staging, pinned offline refresh, pre-commit failure behavior, and draft GitHub Release creation.

tldw_Server_API/tests/Utils/test_release_helper.py

test_first_class_watchlists_db.pyTest Watchlist URL validator reset +23/-0

Test Watchlist URL validator reset

• Verifies changing a source URL clears stale conditional-fetch and deferral state.

tldw_Server_API/tests/Watchlists/test_first_class_watchlists_db.py

@qodo-code-review

qodo-code-review Bot commented Sep 5, 2026

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📜 Skill insights (0)

Grey Divider


Remediation recommended

1. Contract tests lack markers ✓ Resolved 📘 Rule violation ▣ Testability
Description
New CI and deployment contract tests are added without exactly one accepted pytest classification
marker. As a result, these tests cannot be reliably selected by the required test categories.
Code

tldw_Server_API/tests/CI/test_frontend_e2e_critical_fixture_contract.py[12]

+def test_critical_e2e_workflow_selects_the_tracked_minimal_config_fixture() -> None:
Evidence
PR Compliance ID 380651 requires one accepted marker on every added or modified test. The cited test
definitions have no accepted function-level marker, and their modules do not define an accepted
module-level pytestmark.

Rule 380651: Apply appropriate pytest markers to all tests
tldw_Server_API/tests/CI/test_frontend_e2e_critical_fixture_contract.py[12-18]
tldw_Server_API/tests/CI/test_pypi_workflow_contracts.py[50-50]
tldw_Server_API/tests/CI/test_release_workflow_contracts.py[139-139]
tldw_Server_API/tests/CI/test_required_workflow_contracts.py[386-386]
tldw_Server_API/tests/CI/test_sbom_workflow_contracts.py[68-68]
tldw_Server_API/tests/Utils/test_docker_production_reference.py[208-208]
tldw_Server_API/tests/Utils/test_production_preflight.py[160-160]
tldw_Server_API/tests/Utils/test_release_helper.py[819-819]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
New CI and deployment contract tests lack an accepted pytest classification marker.

## Issue Context
Every new test must have exactly one of `unit`, `integration`, `external_api`, or `local_llm_service`. These local workflow, documentation, and deployment contract checks appear suitable for `unit`; use function decorators or one module-level `pytestmark` per file.

## Fix Focus Areas
- tldw_Server_API/tests/CI/test_frontend_e2e_critical_fixture_contract.py[1-18]
- tldw_Server_API/tests/CI/test_pypi_workflow_contracts.py[50-145]
- tldw_Server_API/tests/CI/test_release_workflow_contracts.py[109-422]
- tldw_Server_API/tests/CI/test_required_workflow_contracts.py[386-419]
- tldw_Server_API/tests/CI/test_sbom_workflow_contracts.py[68-287]
- tldw_Server_API/tests/Utils/test_docker_production_reference.py[208-223]
- tldw_Server_API/tests/Utils/test_production_preflight.py[147-202]
- tldw_Server_API/tests/Utils/test_release_helper.py[818-979]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Monitoring settings block core deployment ✓ Resolved 🐞 Bug ≡ Correctness
Description
The production preflight unconditionally requires Prometheus, Alertmanager, and Grafana image
variables even when validating the standalone core production compose file, which contains none of
those services. As a result, normal core deployments without the separate monitoring companion fail
with missing_required errors before startup unless operators provide irrelevant monitoring
configuration.
Code

Helper_Scripts/Deployment/production_preflight.py[R48-50]

+    "PROMETHEUS_IMAGE",
+    "ALERTMANAGER_IMAGE",
+    "GRAFANA_IMAGE",
Evidence
Every variable in REQUIRED_ENV_NAMES, including the newly added monitoring image fields, produces
a preflight error when absent and is included in image validation. The primary production compose
invokes this preflight but defines only the core application, Caddy, PostgreSQL, and Redis services;
Prometheus, Alertmanager, and Grafana images are consumed only by the separately operated monitoring
companion compose file.

Helper_Scripts/Deployment/production_preflight.py[24-52]
Helper_Scripts/Deployment/production_preflight.py[643-649]
Dockerfiles/docker-compose.production.yml[8-35]
Dockerfiles/Monitoring/docker-compose.production.yml[121-180]
Docs/Deployment/Production_Reference_Deployment.md[15-26]
Makefile[97-103]
Helper_Scripts/Deployment/production_preflight.py[48-50]
Helper_Scripts/Deployment/production_preflight.py[513-526]
Dockerfiles/docker-compose.production.yml[8-32]
Dockerfiles/Monitoring/docker-compose.production.yml[121-166]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Monitoring-only image variables are mandatory for every production preflight invocation, including validation of the primary compose deployment that does not run monitoring services. Make the required variables depend on the selected compose topology, or validate the monitoring configuration separately.

## Issue Context
The normal Makefile deployment path passes only `Dockerfiles/docker-compose.production.yml`, which invokes `production_preflight.py` and contains only the application-stack services. Prometheus, Alertmanager, and Grafana are defined in `Dockerfiles/Monitoring/docker-compose.production.yml`, and documentation identifies monitoring as a standalone companion started after the main stack.

## Fix Focus Areas
- Helper_Scripts/Deployment/production_preflight.py[24-52]
- Helper_Scripts/Deployment/production_preflight.py[513-526]
- Helper_Scripts/Deployment/production_preflight.py[643-649]
- Dockerfiles/docker-compose.production.yml[8-32]
- Dockerfiles/Monitoring/docker-compose.production.yml[121-166]
- tldw_Server_API/tests/Utils/test_production_preflight.py[29-62]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Provenance subject remains unverified ✓ Resolved 🐞 Bug ⛨ Security
Description
load_image_evidence accepts any nonempty https://github.com/ URL as project-image provenance
without requiring or validating a provenance bundle against the expected repository, signer
workflow, attestation, or exact image subject digest. Manifest assembly and verification preserve
this unchecked value, allowing release evidence to pass while claiming exact-subject provenance that
may be unrelated or fabricated.
Code

Helper_Scripts/Supply_Chain/release_evidence.py[R393-394]

+        if provenance_ref is None or not provenance_ref.startswith("https://github.com/"):
+            raise _error(context, "provenance_ref")
Evidence
The project-image provenance validator checks only the broad HTTPS GitHub URL prefix and copies the
value into ImageEvidence; manifest assembly requires only record, SBOM, scan, and decision files,
omitting the project provenance bundle. Verification then rebuilds a manifest containing the same
unchecked value rather than inspecting a bundle or binding the attestation to the repository,
workflow, or image digest, despite operator documentation stating that the reference must identify
the exact GitHub attestation and that project provenance bundles exist for verification.

Helper_Scripts/Supply_Chain/release_evidence.py[383-425]
Helper_Scripts/Supply_Chain/release_evidence.py[644-676]
.github/workflows/publish-docker.yml[317-323]
.github/workflows/publish-docker.yml[364-382]
Helper_Scripts/Supply_Chain/release_evidence.py[383-411]
Helper_Scripts/Supply_Chain/release_evidence.py[544-565]
Docs/Development/Software_Supply_Chain.md[249-270]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Release evidence accepts any GitHub URL as project-image provenance without requiring or validating the retained provenance bundle. Update validation so the provenance reference is verified as the exact attestation for the expected repository, signer workflow, and image subject digest, rejecting missing, fabricated, or unrelated provenance.

## Issue Context
The publishing workflow records the attestation URL produced by `actions/attest-build-provenance`, and the documentation requires `provenance_ref` to identify that exact GitHub attestation. The current reusable verifier checks only a broad URL prefix, preserves the string when rebuilding manifests, and does not include project provenance bundles in the required evidence-file set or inspect such a bundle during verification.

## Fix Focus Areas
- Helper_Scripts/Supply_Chain/release_evidence.py[383-411]
- Helper_Scripts/Supply_Chain/release_evidence.py[393-425]
- Helper_Scripts/Supply_Chain/release_evidence.py[544-565]
- Helper_Scripts/Supply_Chain/release_evidence.py[644-676]
- .github/workflows/publish-docker.yml[317-323]
- .github/workflows/publish-docker.yml[325-357]
- tldw_Server_API/tests/Supply_Chain/test_release_evidence.py[268-284]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


View medium (2)
4. tmp_path lacks type hint ✓ Resolved 📘 Rule violation ✧ Quality
Description
The new test_updating_source_url_clears_conditional_fetch_state function leaves its tmp_path
parameter unannotated. Both applicable type-hint rules require explicit annotations for every newly
added function parameter.
Code

tldw_Server_API/tests/Watchlists/test_first_class_watchlists_db.py[58]

+def test_updating_source_url_clears_conditional_fetch_state(tmp_path):
Evidence
The changed function signature declares tmp_path without an annotation, while PR Compliance IDs
224215 and 380614 require explicit annotations on every parameter of newly added functions.

Rule 224215: Require type hints on all function parameters and return values
Rule 380614: Require type hints on function parameters and return values
tldw_Server_API/tests/Watchlists/test_first_class_watchlists_db.py[58-58]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The newly added test function has an untyped `tmp_path` parameter.

## Issue Context
Annotate the pytest fixture parameter explicitly, typically as `tmp_path: Path`, and import `Path` from `pathlib` if it is not already available.

## Fix Focus Areas
- tldw_Server_API/tests/Watchlists/test_first_class_watchlists_db.py[58-58]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


5. Supply-chain tests lack markers ✓ Resolved 📘 Rule violation ▣ Testability
Description
The newly added supply-chain test modules define tests without exactly one accepted classification
marker. This prevents the suite from consistently distinguishing unit, integration, external API,
and local-service tests.
Code

tldw_Server_API/tests/Supply_Chain/test_dependency_lock_contracts.py[169]

+def test_next_security_baseline_is_exact() -> None:
Evidence
PR Compliance ID 380651 requires exactly one accepted classification marker on each test. The cited
new modules contain test definitions such as test_next_security_baseline_is_exact but have neither
a function-level accepted marker nor a module-level pytestmark.

Rule 380651: Apply appropriate pytest markers to all tests
tldw_Server_API/tests/Supply_Chain/test_dependency_lock_contracts.py[169-169]
tldw_Server_API/tests/Supply_Chain/test_exception_policy.py[51-51]
tldw_Server_API/tests/Supply_Chain/test_image_pinning_contracts.py[73-74]
tldw_Server_API/tests/Supply_Chain/test_release_evidence.py[175-175]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The new supply-chain test modules define tests without an accepted pytest classification marker, contrary to the requirement that every test have exactly one of `unit`, `integration`, `external_api`, or `local_llm_service`.

## Issue Context
These tests are deterministic local contract tests and appear suitable for a module-level `pytestmark = pytest.mark.unit`. Apply exactly one accepted classification marker to every test.

## Fix Focus Areas
- tldw_Server_API/tests/Supply_Chain/test_dependency_lock_contracts.py[1-361]
- tldw_Server_API/tests/Supply_Chain/test_exception_policy.py[1-536]
- tldw_Server_API/tests/Supply_Chain/test_image_pinning_contracts.py[1-234]
- tldw_Server_API/tests/Supply_Chain/test_release_evidence.py[1-421]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Context sources
✅ Compliance rules (platform): 74 rules
Review mode: 🧠 Deep: This is an exceptionally dense, high-blast-radius supply-chain and release-control change spanning workflows, image/dependency pinning, SBOM and vulnerability policy, release tooling, and multiple independent test and frontend paths, making redundant review materially valuable.

Grey Divider

Tip of the day
💡 Did you know, you can switch off images and animations for a plain-text comment

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment thread tldw_Server_API/tests/Watchlists/test_first_class_watchlists_db.py Outdated
Comment thread Helper_Scripts/Deployment/production_preflight.py Outdated
Comment thread Helper_Scripts/Supply_Chain/release_evidence.py
@rmusser01
rmusser01 force-pushed the codex/task-13013-7-supply-chain-design branch 3 times, most recently from 7735a7f to e8e22a2 Compare September 5, 2026 06:23
@rmusser01

Copy link
Copy Markdown
Owner Author

Published e8e22a2 after a clean rebase onto dev 256d64d; range-diff preserves all seven patches.

The applications SBOM now derives only the three workspace identity records from checked-in manifests while preserving the canonical required-only Bun dependency inventory. Clean-fixture pinned generation and CycloneDX schema validation pass. Both real Watchlist journey tests pass with a CI-only localhost-suffix fixture allowance; production egress defaults and default port checks are unchanged. Six actual-policy regressions exercise allowed fixture access and rejected unrelated hosts and ports.

Verification before rebase: 858 focused Python tests passed. After rebase: 857 passed and one existing coverage contract fails because the newly added upstream test_pdf_summary_service_prompt.py is absent from the media shard inventory. That new repair is awaiting scoped approval. Workflow syntax, touched lint, and offline pinned lock freshness pass. Bandit has no new findings; its existing test-file --cov false positive is unchanged.

Character Chat now selects the deterministic custom mock model, but its real success journey remains blocked by a pre-transport ChatBadRequestError in complete-v2. No backend fix or assertion/timeout bypass is included. Known vulnerability admission failures remain blocking, with no exceptions or policy relaxations. Fresh exact-head CI and review are still required; this PR is not merge-ready.

@rmusser01
rmusser01 force-pushed the codex/task-13013-7-supply-chain-design branch 5 times, most recently from 9a581e2 to a2839ef Compare September 6, 2026 14:21
@rmusser01

Copy link
Copy Markdown
Owner Author

Published a2839ef after rebasing onto dev 3b82e4c; all 16 patches remained equivalent in range-diff. Fixed an actual read-only startup failure: optional prompt templates no longer create directories inside installed packages during import. Added exact-OCI runtime checks for locked dependencies, real per-user Chroma collection/query isolation, live-client TCP listeners, and cryptography-backed ES256 signing. The original OCI candidate is loaded and run by immutable subject, and runtime evidence is checksummed alongside scan evidence. No Chroma replacement, vulnerability exception, or gate relaxation was introduced.

Verification: 539 tests passed with one expected skip after rebase; actionlint passed; Bandit found no issues in touched production code. Supporting app/worker/audio-worker image tests with only the startup fix mounted passed locked Chroma 1.5.9, python-jose 3.5.0, and cryptography 50.0.1. Independent review found no actionable correctness/security issues. Exact rebuilt-candidate CI and fresh review are running. Known vulnerability findings remain blocking; this is not a release certification or merge-ready claim.

@rmusser01
rmusser01 force-pushed the codex/task-13013-7-supply-chain-design branch 4 times, most recently from 8ef7660 to e2af1cf Compare September 6, 2026 22:04
@rmusser01

Copy link
Copy Markdown
Owner Author

Candidate qualification checkpoint — 2026-09-07

TASK-13013.7.7 is complete as candidate qualification only. Native amd64 run 34091697435 passed at 0b58cec0417b556add310f43d19126d3f815a089.

  • The full pinned upstream patch and authenticated Debian source remain unchanged. Native package builds and the fatal test gate pass, with inherited skips/known-failure cases retained in raw output.
  • All 43 emitted candidate packages install in a fresh offline container: 12 upgrades, 31 new packages, zero removals. Verified local-cache staging preserves original bytes and rejects duplicate identities; no-download/no-removal safeguards remain intact.
  • Exact installed versions, dependency check, empty dpkg audit, five SONAME/export comparisons and six permitted smoke checks pass. Independent final evidence review found no blocking issues.
  • Controller regression verification: 288 passed, one existing opt-in skip, four existing warnings; scoped static checks pass. Bandit reports no findings, with the two documented controlled test-only annotations and standard B101 assertion exclusion unchanged.

Artifact 10007312535 ZIP SHA256: 3f3428e7580196ce556ef86a5e52a16f5a761562cc5ea54110c000150fcf2bde; independently verified against GitHub metadata. Full source/binary manifests and package/cache/installed-version mappings were checked after download. Actions retention is 14 days; downloaded evidence is retained in task-owned storage.

This supersedes the earlier pending util-linux qualification checkpoint, not the release blockers. Production images, source patches, test requirements, vulnerability policy and admission gates are unchanged. Privileged exploit-path testing, official scanner recognition and production adoption remain unverified/unapproved. Source/container admission and separate Notes E2E onboarding-overlay click failures remain red. No merge, package promotion or release publication occurred; the human Change summary is unchanged.

@rmusser01

Copy link
Copy Markdown
Owner Author

Remediation checkpoint: commit 4de994d fixes the returning-user Notes fixture without changing production tutorial behavior or workflow API assertions. Exact-head critical E2E run https://github.com/rmusser01/tldw_server/actions/runs/34139549060/job/101798198369 passed all four Notes cases and the Notes-to-Flashcards journey without retries (46 passed; one existing unrelated Character Chat provider-configuration case skipped). Focused local regression/control coverage passed 16/16; independent review found no issues. TASK-13013.7.8 is complete.

Commit f9857e1 adds candidate-only Expat source preparation, not a production fix: all five source archive hashes and the Expat, CPython and Debian source signatures were verified, and 13 preparation tests pass. Both the system and Python-bundled parser copies remain in the qualification scope. Native rebuilds, parser/ABI/application tests, combined-image scans and final security review remain outstanding. No production images, vulnerability thresholds or exceptions were changed; the PR remains blocked from merge.

@rmusser01
rmusser01 force-pushed the codex/task-13013-7-supply-chain-design branch from 3ecd1e5 to b2559cd Compare September 8, 2026 06:43
@rmusser01

Copy link
Copy Markdown
Owner Author

Published b2559cd after rebasing onto dev 6cd2745. All 66 patches are unchanged in range-diff.

The reviewed candidate-only source-manifest validator now rejects incomplete coverage, altered input bytes, unsafe paths, invalid prerequisites and duplicate patch bytes; its 65 synthetic contract tests pass. It does not authenticate sources by itself, supply a completed source ledger, or authorize a wheel build.

Also fixed two concrete CI defects: Docker inspection failures now preserve their exit status in the combined candidate workflow, and the admin permission filter has its missing accessible name. Three workflow execution regressions and all seven admin user-page tests pass. Post-rebase Supply_Chain verification: 587 passed, four existing opt-in skips, four warnings. Shard coverage has no newly uncovered tests. Exact-head GitHub workflow lint passes: https://github.com/rmusser01/tldw_server/actions/runs/34195919210 .

All five existing Qodo inline review threads are resolved; fresh checks and review are running. Production recipes, security thresholds and exceptions are unchanged. Source-ledger and native wheel qualification work remain incomplete, and vulnerability admission remains blocking. This is not merge-ready. The human Change summary is unchanged.

@rmusser01

Copy link
Copy Markdown
Owner Author

Final CI-repair checkpoint for b2559cd: frontend-required now passes (https://github.com/rmusser01/tldw_server/actions/runs/34195919213/job/101967552449). The admin unit ratchet reports inherited=40 and regressions=0; the formerly failing permission-filter case is repaired. The admin real-backend suite reports 26 passed, and the required frontend job completes successfully. This is not a claim that the inherited unit failures were fixed.

Backend-required, e2e-required, critical E2E, CodeQL and workflow lint also pass. All five image candidates and the source SBOM reach security admission and remain rejected by the existing vulnerability policy. Dependency review remains blocked by the four ChromaDB advisories. No unresolved inline review threads or new Qodo comments are present; CodeRabbit explicitly skipped review for this base branch, which is not an approval.

No further CI-only repair is identified. Candidate wheel source repair and qualification remain incomplete, and the source-history review remains paused at the documented platform security restriction. The follow-up loop is paused at this external blocker; no security checks, thresholds, exception lists or production inputs were changed. PR remains unmerged. The human Change summary is unchanged.

@rmusser01

Copy link
Copy Markdown
Owner Author

Approval record — five OS applicability exceptions (TASK-13013.7.24)

Codex is posting this record at the explicit direction of the requester, rmusser01, following their approval in the working task. The requester approved activating precisely the five reviewed OS records below, with rmusser01 as accountable owner, and authorized posting this approval on PR #2869. This records that instruction transparently; it is not a claim of a separate, independently authored review comment.

Approved scope: the exact vulnerability/component/PURL/installed-version/severity combinations, rationales and mitigations below. All five are Critical, created 2026-09-10 and valid through 2026-09-17 UTC inclusive. The canonical policy approval reference will be this PR URL. No dates or other reviewed fields will change.

The three backend Perl records are supported by exact-image /usr/bin/perl observations of 8-byte integers and pointers; CVE-2026-8376 requires a 32-bit Perl build. The two frontend zlib1g records are supported by Debian's determination that vulnerable contrib/minizip was not built into these Bookworm zlib binary packages. Reassessment is required after any package, build or architecture change.

Primary advisory references: Perl CVE-2026-8376 and zlib CVE-2023-45853.

Reviewed packet: Docs/Evidence/TASK-13013.7.23-applicability-dispositions.json, SHA-256 d0fcaff69d7f248628ddb1d199ef016b3d45797ac1062d4ecd9ca6544d0ac039, prepared in local commit 70289b540c and reviewed at local head 71fc7caa4d12f7bb2e6b0144dddca70378b11826. Those two local commits have not yet been pushed.

The underlying scans and image evidence are from PR head 78c3f92228c6411ee4637b9d2df9aa3b50aacdc8: container admission run 34362968533 and source SBOM run 34362968663. The packet binds each record to those retained artifact digests and subjects.

This approval covers only these five OS records. It does not cover the 16 conditional Chroma records, NLTK, other OS findings, a new push, merge, deployment or release. Complete raw reports remain unchanged. Expected residual blockers: Python source 5; applications/admin source 0 each; app 233; worker 58; audio worker 233; webui 55; admin-ui 55. Admission remains blocked.

The exact approved records follow; approval is set to the canonical PR reference for activation.

{
  "exceptions": [
    {
      "approval": "https://github.com/rmusser01/tldw_server/pull/2869",
      "component": "image-app",
      "created_on": "2026-09-10",
      "expires_on": "2026-09-17",
      "id": "TASK-13013.7.23-OS-01",
      "installed_version": "5.40.1-6",
      "mitigation": "Limited to the named linux/amd64 image and exact distribution package identity. Reassess after any package/build/architecture change. Evidence and limits: Docs/Evidence/TASK-13013.7.23-applicability-dispositions.md.",
      "owner": "rmusser01",
      "purl": "pkg:deb/debian/perl-base@5.40.1-6?arch=amd64&distro=debian-13.6",
      "rationale": "Advisory requires a 32-bit Perl build; exact-image /usr/bin/perl reports 8-byte integer and pointer sizes.",
      "severity": "CRITICAL",
      "supersedes": null,
      "vulnerability_id": "CVE-2026-8376"
    },
    {
      "approval": "https://github.com/rmusser01/tldw_server/pull/2869",
      "component": "image-worker",
      "created_on": "2026-09-10",
      "expires_on": "2026-09-17",
      "id": "TASK-13013.7.23-OS-02",
      "installed_version": "5.40.1-6",
      "mitigation": "Limited to the named linux/amd64 image and exact distribution package identity. Reassess after any package/build/architecture change. Evidence and limits: Docs/Evidence/TASK-13013.7.23-applicability-dispositions.md.",
      "owner": "rmusser01",
      "purl": "pkg:deb/debian/perl-base@5.40.1-6?arch=amd64&distro=debian-13.6",
      "rationale": "Advisory requires a 32-bit Perl build; exact-image /usr/bin/perl reports 8-byte integer and pointer sizes.",
      "severity": "CRITICAL",
      "supersedes": null,
      "vulnerability_id": "CVE-2026-8376"
    },
    {
      "approval": "https://github.com/rmusser01/tldw_server/pull/2869",
      "component": "image-audio-worker",
      "created_on": "2026-09-10",
      "expires_on": "2026-09-17",
      "id": "TASK-13013.7.23-OS-03",
      "installed_version": "5.40.1-6",
      "mitigation": "Limited to the named linux/amd64 image and exact distribution package identity. Reassess after any package/build/architecture change. Evidence and limits: Docs/Evidence/TASK-13013.7.23-applicability-dispositions.md.",
      "owner": "rmusser01",
      "purl": "pkg:deb/debian/perl-base@5.40.1-6?arch=amd64&distro=debian-13.6",
      "rationale": "Advisory requires a 32-bit Perl build; exact-image /usr/bin/perl reports 8-byte integer and pointer sizes.",
      "severity": "CRITICAL",
      "supersedes": null,
      "vulnerability_id": "CVE-2026-8376"
    },
    {
      "approval": "https://github.com/rmusser01/tldw_server/pull/2869",
      "component": "image-webui",
      "created_on": "2026-09-10",
      "expires_on": "2026-09-17",
      "id": "TASK-13013.7.23-OS-04",
      "installed_version": "1:1.2.13.dfsg-1",
      "mitigation": "Limited to the named linux/amd64 image and exact distribution package identity. Reassess after any package/build/architecture change. Evidence and limits: Docs/Evidence/TASK-13013.7.23-applicability-dispositions.md.",
      "owner": "rmusser01",
      "purl": "pkg:deb/debian/zlib1g@1.2.13.dfsg-1?arch=amd64&distro=debian-12.15&epoch=1",
      "rationale": "Debian states vulnerable contrib/minizip is not built into this Bookworm zlib binary package.",
      "severity": "CRITICAL",
      "supersedes": null,
      "vulnerability_id": "CVE-2023-45853"
    },
    {
      "approval": "https://github.com/rmusser01/tldw_server/pull/2869",
      "component": "image-admin-ui",
      "created_on": "2026-09-10",
      "expires_on": "2026-09-17",
      "id": "TASK-13013.7.23-OS-05",
      "installed_version": "1:1.2.13.dfsg-1",
      "mitigation": "Limited to the named linux/amd64 image and exact distribution package identity. Reassess after any package/build/architecture change. Evidence and limits: Docs/Evidence/TASK-13013.7.23-applicability-dispositions.md.",
      "owner": "rmusser01",
      "purl": "pkg:deb/debian/zlib1g@1.2.13.dfsg-1?arch=amd64&distro=debian-12.15&epoch=1",
      "rationale": "Debian states vulnerable contrib/minizip is not built into this Bookworm zlib binary package.",
      "severity": "CRITICAL",
      "supersedes": null,
      "vulnerability_id": "CVE-2023-45853"
    }
  ],
  "schema_version": 1
}

…idence (TASK-13013.7)

Lock dependencies and image identities, validate complete SBOM and scan evidence, and admit exact candidates before promotion so releases fail closed. Retain signed provenance and documented retry safeguards; known vulnerability findings remain blocking.
Bind native attestation verification to exact release subjects, preserve the existing admission routing, and make frozen packaging and scanner mounts reliable. Restore the canonical WebUI build without weakening budgets or vulnerability gates.

TASK-13013.7; plan: Docs/superpowers/plans/2026-08-30-software-supply-chain-release.md. Verification: 846 focused tests, workflow lint, lock freshness, Bandit and independent review.
TASK-13013.7: record pushed correction, resolved review threads and remaining admission gates.
Keep the canonical Docker build contract aligned and cover each platform with the real shard matcher. Rebased onto dev 3bc8c6a; 851 focused Python tests and four frontend contract tests pass.

TASK-13013.7; plan: Docs/superpowers/plans/2026-08-30-software-supply-chain-release.md. Security and newly diagnosed integration blockers remain explicit.
TASK-13013.7: keep the canonical required-only Bun dependency scan while making clean-checkout package metadata independent of child locks and node_modules. Verify the actual workflow with pinned generation and schema validation. Plan: Docs/superpowers/plans/2026-08-30-software-supply-chain-release.md.
Apply the exact TASK-13013.7.23 records after explicit requester approval recorded on PR #2869. Keep version/component/severity matching and September 17 expiry unchanged; retain full scan evidence and all remaining blockers.

Plan and verification: TASK-13013.7.24. Eight retained reports reconcile to five exceptions and zero unmatched records; 82 policy/workflow tests, 25 matching boundary checks, expiry validation, scoped Bandit and independent review pass.
Close the release-image evidence gap from TASK-13013.7.23 by reusing the existing isolated probe against each authenticated immutable backend child. Retain runtime and manifest checksums and require runtime plus vulnerability-policy success before admission.

Plan and verification: TASK-13013.7.25. 106 focused tests, 19 final behavioral tests, Actionlint/ShellCheck, formatting, syntax, scoped Bandit and independent review pass. Chroma exceptions remain conditional; this local change does not dispatch or certify a release.
Explicitly select the Rust API so CHROMA_API_IMPL cannot redirect internal persistent stores. Align the declared Chroma minimum with tested, already-locked 1.5.9 without changing the resolved graph. Preserve injected clients and record applicability limits.

TASK-13013.7.26; plan and verification: Docs/Evidence/TASK-13013.7.26-embedded-chroma-settings.md. Verified 76 focused tests, offline lock consistency, scoped lint/compile/Bandit and independent review.
Bind the existing embedded runtime probe to the authenticated platform child, retain checksummed evidence, and require runtime plus vulnerability-policy success before promoting main aliases. Preserve the existing source gate and promotion commands.

TASK-13013.7.27; plan and evidence: Docs/Evidence/TASK-13013.7.27-main-runtime-admission.md. Verified 101 focused tests, Actionlint/ShellCheck, Black/Ruff, shell/Python checks, scoped Bandit and independent review.
Use the reviewed embedded deployment evidence to exclude the exact Chroma 1.5.9 findings in source and backend images. Derive dependency-review allowances from the same expiring policy and revalidate complete raw output, preserving all other findings and the credential boundary.
…dispositions

Disable and verify SQLite schema trust before uploaded database metadata is
prepared, retaining read authorization to block nested FTS configuration views.
Keep normal OpenWebUI hydration and APKG imports covered by regressions.

Add fourteen exact current-use exclusions and five source advisory aliases
while preserving existing approvals and documenting remaining gate boundaries.
Retain source, candidate-library, report, test and independent-review evidence.

Task: TASK-13013.7.40
Design: Docs/Design/TASK-13013.7.40-sqlite-metadata-validation.md
Remove duplicate shard assignments introduced by integrating both branches and reject repeats before path-set coverage checks. Retain the completed integration plan, preservation evidence and focused verification results; historical image evidence remains tied to its recorded source revision.
…K-13013.7.44)

Keep optional lockfile approvals out of the required-only source inventory so unused optional records do not falsely fail base admission. Preserve exact matching and all approval details, prove runtime and duplicate-scope rejection, and retain fresh scans showing all three source gates pass.
@rmusser01
rmusser01 force-pushed the codex/task-13013-7-supply-chain-design branch from 78c3f92 to ee856c7 Compare September 11, 2026 00:54
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