Repository navigation
fix(api): qualify Hono adapter for actual Prisma parent (0.55.66) - #262
Conversation
Prepare the aged 2.1.3 override after real parent lifecycle and exploit RED/GREEN. CI-generated source locks and permanent pin regressions follow as the same bounded draft outcome. Both adapters retain a process after close; the isolated runner records and explicitly cleans up owned resources without changing parent internals or Jest worker settings. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Import exact-source CI lock artifacts, enforce the complete installed parent graph, and preserve the isolated real-parent lifecycle proof and cleanup boundary. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Record the protected push failure and confirmed focused generate recovery without changing any gate, database or production source behavior. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Preserve the complete qualified 0.55.66 API graph and both histories. Retain all merged dependency fixes and explicit performance and release holds. Verify graph/source union, owned clean restore, unchanged source locks, both complete inventories and isolated Prisma generation. New-head protected publication, review and CI remain separate. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Independent read-only technical review Exact candidate: a5f4c0a Result: No significant introduced defects found in the reviewed changes. Review limits: Read-only review of the exact candidate, exclusively in the No tests, installs, or Docker commands were run by this reviewer. This review |
Summary
Current reviewed-master integration
Exact published head:
a5f4c0aab2ad81a770d688f461b7234ae07bd696.Ordinary merge parents are original #262
7379a97eand reviewed mastercffc64c8(merged #261, version 0.55.64). This proposed 0.55.66 rollbackunit now targets master; all original constituent commits are preserved.
The complete qualified API manifests, locks and fixtures equal original
7379a97e. Against master, the only non-root package change is the selectedHono adapter 2.1.3. The web graph and serving source, schema and estate
registry preserve reviewed master. Both narrative histories are retained.
New-head evidence:
PREPUSH_MODE=Validatetracking push: 28/28 PASS, exit 0,1,042.7 seconds. No skipped/bypassed hook.
explicitly skipped by the existing inmemory matrix.
both complete
npm ls --all --jsoninventories and isolatednpm run prisma:generate: exit 0.introduced defects, published in
fix(api): qualify Hono adapter for actual Prisma parent (0.55.66) #262 (comment).
The reviewer did not execute tests or independently authenticate historical
raw qualification artifacts. This is not a GitHub-hosted human approval.
PR Build Test Image,
push Build Test Image,
CodeQL,
Docs freshness,
and coordinated clean lock regeneration.
Every run's metadata binds to exact
a5f4c0aa.7cb51ac7a990393fcf59fee3ee66022097ecc3fcbbdf7233b481fe808bb39e2cauthenticated against GitHub metadata before safe absolute-path extraction.
Both lockfiles equal the exact committed Git blob bytes; Windows CRLF
checkout differences are separately explained, not normalized into archive
authentication. Seven-day floor preserved, zero changed packages.
No local regeneration, import, reinstall or repeated protected push needed.
No new actual-parent workload was repeated: the entire qualified API graph
and fixture source are unchanged. Natural process exit remains unproved.
No live estate, shared database, deployment or customer resource was changed.
Performance #251 remains unmerged with its failed qualification preserved.
This PR does not establish release admission. If 0.55.66 merges first,
held 0.55.65 must be reconciled/versioned forward rather than downgrade master.
Original qualification checkpoint (historical)
Qualify and select
@hono/node-server2.1.3 for its actual Prisma 7.8.0 / dev0.24.3 parent, addressing GHSA-rmxm-3fg6-px4f in a separate proposed 0.55.66
rollback unit stacked on unmerged draft #261.
The real parent's startup, HTTP requests, synthetic primary/shadow database
writes, dump, public port-conflict rejection, close and listener/data cleanup
pass with both adapters. The actual HTTP exploit exposes a synthetic protected
file at 1.19.15 and returns 404 at 2.1.3. Upstream still declares exact 1.19.11:
this is bounded behavioral qualification, not semver acceptance.
Both versions retain a post-close process. Natural process exit is NOT claimed.
The isolated runner records that state and stops/verifies/removes its exact
owned container. It does not patch the parent or change Jest workers/exit rules.
No shared database, host listener, existing container, live estate or cloud
resource is mutated.
Linked Defect / Plan Reference
docs/HONO_PRISMA_PARENT_QUALIFICATION.md, including execution RCA.TDD Process
api/src/security/)Pre-manifest permanent RED: four failed / two passed of six, including
200 !== 404on the real double-decode exploit and the old selected pin.The complete inventory also rejected the initial wrong installed graph.
Final clean-installed GREEN is six passed in one suite. The real-parent
runner passes all 12 claims from that graph and removes its owned container.
Feature / Bug-Fix Commit Checklist (standing rule)
Every behavioral change must include all that apply. Tick or strike through with N/A + reason.
api/test/e2e/exercising the feature through HTTP. N/A for a new SCIM spec: no SCIM path changes; existing HTTP suite remains a protected gate, and the actual parent HTTP lifecycle is exercised separately.scripts/live-test.ps1runnable against local + Docker + Azure. N/A: this task authorizes disposable local real-parent proof, not shared/live/cloud mutation. Reusable isolated runner added instead.docs/with architecture, RFC references, Mermaid diagrams, test coverage. Qualification report includes text flow, upstream advisory/fix references, comparison table, commands, limits and RCA; no SCIM RFC behavior or Mermaid content changes.docs/INDEX.md[Unreleased]entry with full test counts and feature summarySession_starter.mdanddocs/CONTEXT_INSTRUCTIONS.mdapi/package.json(and any other version refs) when behavior changedValidation Output
api:npm test -- --runTestsByPath src\scripts\check-hono-parent-qualification.spec.tsapi:npx eslint src\scripts\check-hono-parent-qualification.spec.tsnpm --prefix api ls --all --jsonpwsh -NoProfile -File scripts\qualify-prisma-hono-parent.ps1node --check scripts\fixtures\prisma-hono-parent.cjsnode scripts\fixtures\prisma-hono-parent.cjsnpm --prefix api run prisma:generatewith process-only checked-in CI configurationpwsh -NoProfile -File scripts\audit-doc-freshness.ps1git diff --check$env:PREPUSH_MODE='Validate'; git pushwith CI configuration in that same shellClean-CI lock run 40948177653 used source
38b1a781eed63905d429feef2480c899dd203161.Artifact 12929363808 authenticated SHA-256:
bf1c5791b9cfddf1a9e22beacd71a4549835c3d37ebf32db413e0d4629048946.The only non-root API lock change is the adapter; web has no non-root
change. Approved-feed tarball bytes match the public SHA-512 lock.
The bootstrap source image run 40948154638 failed on the intentionally
not-yet-regenerated lock (
1.19.15versus2.1.3). It is not counted asfinal validation. This is corrected by importing the authenticated locks,
not by loosening installation or supply-chain checks.
The first final Validate attempt correctly blocked the push at Prisma
generation because its fresh process lacked
DATABASE_URL, after unit andHTTP suites passed. The unchanged generate command passes with the exact
checked-in CI value scoped only to that process. The normal protected push
passed with that setup, without changing a gate or contacting a database.
Published exact head:
7379a97e3f64cb054fac2a5ff34cdbe144027993.Available hosted CI is the exact-tip push run
40953652162.
Both jobs succeeded, including container startup/smoke and the HIGH/CRITICAL
Trivy gate. This stacked base does not imply a master-targeted pull-request
coupling matrix ran. No other workflow run is reported for this exact tip.
Immutable test image:
ghcr.io/pranems/scimserver@sha256:551e2db38843ddaf8da4bd2fe667ebd030c3eecccb9c9e33f067d4ac45842bb6.The workflow published the branch test tag and
sha-7379a97e3f64cb054fac2a5ff34cdbe144027993, notlatest.Nothing was deployed.
Standing Rules Acknowledgment
U+2014) anywhere in the diff. Verified viaSelect-String -Pattern ([char]0x2014).git commit --amendon history that has been pushed.api/src/security/forbidden-source-patterns.spec.tswill catch known anti-patterns.api/src/scripts/lint-migrations.tsenforces this. N/A: no migration changes.Destructive Migration Override (skip if not applicable)
ALLOW_DESTRUCTIVE_MIGRATION=1in the CI environment for this PRN/A: this change has no Prisma schema or migration edits.
Reviewer Hint
Diff areas worth special attention from the reviewer:
and honest retained-process cleanup boundary.
arbitrary streaming/load, native Windows parent listener or production proof.
fix: remediate web Seroval and Undici pins (0.55.62) #259, fix: restore complete API npm inventory with shared override contexts (0.55.63) #260, fix(api): qualify qs and fast-uri advisory patches (0.55.64) #261 and ci: qualify membership performance on isolated Linux runners #251 remain unmerged; integration/order needs fresh
reconciliation, with 0.55.65 still reserved for untouched ci: qualify membership performance on isolated Linux runners #251.
Could not resolve user with login 'copilot' (requestReviewsByLogin).The actual review/request lists and decision are empty. No retry loop or
comment automation followed; actual external review is still required.
data, cleanup-403, browser/human-visual, native/renderer, stopped-authentication
and production-approval holds.
disposition accepted: cohesive dependency/test change; no speculative seam.