GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — fix(deps): report the proxy archive rejection instead of a later HTTP 404 by MohammedAlkindi · Pull Request #3375 · microsoft/apm

Conversation

@MohammedAlkindi

@MohammedAlkindi Mohammed Alkindi (MohammedAlkindi) commented Oct 23, 2026 •
edited by danielmeppiel
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

Description

Behind PROXY_REGISTRY_URL, a rejected proxy archive (symlink member or non-zip body) was followed by fallback 404s, so the error read "Last error: HTTP 404". The download now keeps the first rejection and reports it as Archive error: when no URL succeeds. A later valid archive still wins.

Issue and approved scope

Issue: Refs #3110

Human scope-approval comment: #3110 (comment)

Does this PR complete the issue, or what remains? No: diagnostic slice only; symlink handling stays deferred.

Type of change

  • Bug fix
  • New feature
  • Documentation
  • Maintenance / refactor

Testing

  • Tested locally
  • All existing tests pass (one existing exec-bit test fails on Windows on main too)
  • Added tests for new functionality (if applicable)

Spec conformance (OpenAPM v0.1)

  • Spec edit: docs/src/content/docs/specs/openapm-v0.1.md updated (new/changed <a id="req-XXX"></a> anchor + prose + Appendix C row).
  • Manifest edit: docs/src/content/docs/specs/manifests/openapm-v0.1.requirements.yml updated.
  • Test edit: a @pytest.mark.req("req-XXX") test under tests/spec_conformance/ added or extended.
  • CONFORMANCE.{md,json} regenerated via uv run --extra dev python -m tests.spec_conformance.gen_statement and committed.
  • N/A -- this PR does not change OpenAPM-observable behaviour.

Partial: Refs #3110 -- delivers only the apm-scope:v1 diagnostic-only slice (report the original proxy archive rejection instead of a later HTTP 404). Remaining in #3110 and deliberately not closed here: safe symlink materialization for proxy archives (still deferred per the scope record).

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Mohammed Alkindi (MohammedAlkindi) added 2 commits October 23, 2026 10:49
@MohammedAlkindi
fix(deps): keep the proxy archive rejection instead of a later HTTP 404
5f48011
When a registry proxy URL returns 200 but the archive is rejected (unsafe
member such as a symlink, or a body that is not a zip), the loop moved on
to the remaining fallback URLs and their 404s overwrote the cause, so the
error ended in "Last error: HTTP 404". Track the first archive rejection
separately and report it when no URL succeeds. A later valid archive
still wins.

Refs microsoft#3110
@MohammedAlkindi
docs(changelog): note the proxy archive diagnostic fix
8217fc6
Refs microsoft#3110
@MohammedAlkindi
Mohammed Alkindi (MohammedAlkindi) requested review from Daniel Meppiel (danielmeppiel) and Sergio Sisternes (sergio-sisternes-epam) as code owners October 23, 2026 18:42
Copilot AI balanced review requested due to automatic review settings October 23, 2026 18:42
Copilot AI reviewed Oct 23, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@MohammedAlkindi
docs(changelog): add the PR number to the proxy archive entry
7f3f573
@sergio-sisternes-epam

Sergio Sisternes (sergio-sisternes-epam) commented Nov 3, 2026

Copy link
Copy Markdown
Collaborator

Thank you for contributing this diagnostic-only correction. Issue #3110 has an explicit maintainer-approved scope for reporting the original proxy archive rejection. The requested reviewers include Daniel Meppiel (@danielmeppiel) and Sergio Sisternes (@sergio-sisternes-epam). The remaining symlink-handling design is still deferred, so this PR does not close the full issue. This is a recommendation for human review only, not merge approval.


Generated by autopilot-pr-triage-worker. This comment is AI-generated and may contain errors.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@sergio-sisternes-epam Sergio Sisternes (sergio-sisternes-epam) added area/enterprise Air-gapped/GHE configurability, registry proxy, rulesets, adoption playbook. theme/security Secure by default. Content scanning, lockfile integrity, MCP trust boundaries. triage/recommended Automated advice completed; not human scope approval. type/bug Something does not work as documented. status/accepted Human scope approval; verify the issue's approval record and review contact before work. panel-review Request an advisory PR review; consumed after review. Not human approval or a merge gate. labels Nov 3, 2026
@github-actions github-actions Bot removed the panel-review Request an advisory PR review; consumed after review. Not human approval or a merge gate. label Nov 4, 2026
@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown

Advisory panel review (not merge approval)

Headline: Surfaces the real archive-rejection diagnostic instead of a misleading HTTP 404 (diagnostic slice of #3110; symlink handling stays deferred).

panel-mode=full; personas=supply-chain-security-expert, test-coverage-expert, doc-writer, apm-ceo

Ship recommendation: ship with follow-ups. The change is correct and well scoped. Neither follow-up below gates it.

Panel summary

Persona Blocking Recommended Nit Summary
Supply chain security 0 0 0 Diagnostic only. Containment and symlink refusal are unchanged, and no tokens appear in the error text.
Test coverage 0 1 0 The two core regression traps are solid. The 404 then rejection ordering is untested.
Doc writer 0 2 1 The docs sentence overstates the non-zip case.

Recommended follow-ups

  1. Tests: add one parametrize case for the order 404, then archive rejection, then 404s. The code is correct today, since archive_error = archive_error or last_error keeps the first rejection. The case would lock that ordering against later refactors of the loop. (tests/unit/test_artifactory_support.py)
  2. Docs: enterprise/registry-proxy.md says the error reports the archive's "URL and reason". The non-zip path (Invalid zip archive from <url>) has no reason, so reword to "URL (and the reason, where available)".
  3. Nit, author's call: the second CHANGELOG sentence ("containment checks are unchanged...") is reassurance. It could be trimmed.

Arbitration

No dissent among panelists. Size-limit rejections also go through ArchiveError, so they now surface as Archive error:. That is sensible.

Existing CODEOWNERS reviewers (@danielmeppiel, @sergio-sisternes-epam) remain the human decision makers.


Generated by autopilot-pr-review-worker. This comment is AI-generated and may contain errors.

Generated by PR Review Panel for #3375 · copilot · auto · 191.2 AIC · ⌖ 0.543 AIC · ⊞ 5.8K · ◷

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@sergio-sisternes-epam
Sergio Sisternes (sergio-sisternes-epam) enabled auto-merge November 4, 2026 18:26
sergio-sisternes-epam
Sergio Sisternes (sergio-sisternes-epam) approved these changes Nov 4, 2026
View reviewed changes
Daniel Meppiel (danielmeppiel) and others added 4 commits November 12, 2026 11:55
@danielmeppiel
Merge remote-tracking branch 'origin/main' into danielmeppiel-w2-pr-3375
3be29e4
@danielmeppiel
test(deps): lock first-rejection ordering for proxy archive errors
9e1f9a4
The regression traps covered a rejected archive at the first URL only. Add cases for a 404 before the rejection and for two rejections, so a later refactor of the fallback loop cannot report a later cause or a 404 instead of the first archive rejection. Mutation-checked against last-wins and dropped-capture variants. Addresses panel follow-up 1 (test-coverage-expert), refs microsoft#3110.

Co-authored-by: Copilot App <[email protected]>
@danielmeppiel
docs(registry-proxy): note the reason is shown only when available
b2551b8
The non-zip path reports 'Invalid zip archive from <url>' with no reason, so the guide no longer promises a reason for every archive rejection. Addresses panel follow-up 2 (doc-writer), refs microsoft#3110.

Co-authored-by: Copilot App <[email protected]>
@danielmeppiel
docs(changelog): fold proxy archive entry into the Unreleased Fixed list
183b678
Merging main left two Fixed headings under Unreleased; move the entry into the existing list and trim the reassurance clause to the one fact readers need (symlinks are still refused). Addresses panel nit 3, refs microsoft#3110.

Co-authored-by: Copilot App <[email protected]>
@danielmeppiel

Daniel Meppiel (danielmeppiel) commented Nov 12, 2026

Copy link
Copy Markdown
Collaborator

APM Review Panel: ship_now

Diagnostic-only fix surfaces the real proxy archive rejection instead of a misleading fallback 404 -- all three prior follow-ups folded, both panelists clean.

panel-mode=lean; personas=supply-chain-security-expert,test-coverage-expert,apm-ceo

cc Mohammed Alkindi (@MohammedAlkindi) -- a fresh advisory pass is ready for your review.

Both panelists converge with zero findings. The supply-chain-security-expert confirms no credential leakage, no containment regression, and all extraction guards intact (archive URLs are path-only, auth is header-only). The test-coverage-expert confirms every Done-when criterion of the #3110 apm-scope:v1 record carries a regression trap.

The material delta since the 2026-11-04 advisory is exactly the three follow-ups it requested, plus a clean merge of current main: (1) ordering tests with mutation-break evidence, (2) doc wording "URL (and the reason, where available)", (3) CHANGELOG trim and consolidation into the single Unreleased Fixed list. No production logic changed between heads.

Scope note: this is a deliberate partial of #3110. The human scope record approves only the diagnostic slice and excludes closing the issue, so the PR keeps Refs #3110 without a closing keyword; safe symlink materialization stays deferred.

Aligned with: secure by default (containment and symlink refusal untouched), pragmatic as npm (proxy users see the actionable cause, not a 404), OSS community driven (community fix inside a human-approved slice).

Panel summary

Persona B R N Takeaway
Supply chain security expert 0 0 0 No credential leakage or containment regression; archive URLs are path-only, auth is header-only, and all extraction guards are intact.
Test coverage expert 0 0 0 All Done-when criteria have regression traps; ordering follow-up addressed; containment tests untouched and passing.

B = blocking-severity findings, R = recommended, N = nits.
Counts are signal strength, not gates. The maintainer ships.

Recommendation

All three follow-ups from the 2026-11-04 advisory are folded, both panelists returned zero findings, and local and CI evidence is green. No open items remain for this diagnostic slice. Daniel Meppiel (@danielmeppiel) remains the requested CODEOWNER reviewer and review contact; Sergio Sisternes (@sergio-sisternes-epam) has approved.

Folded in this run

  • (panel) Ordering cases for the proxy archive diagnostic (404 then rejection; two rejections, first wins) -- resolved in 9e1f9a4.
  • (panel) registry-proxy.md now says the error reports the URL (and the reason, where available) -- resolved in b2551b8.
  • (panel) CHANGELOG reassurance trimmed; entry moved into the single Unreleased Fixed list after merging main -- resolved in 183b678.

Copilot signals reviewed

  • review 5632977270 -- NOT-LEGIT: quota notice only, no review content; re-fetch at 183b678 returned zero inline items (drained).

Regression-trap evidence (mutation-break gate)

  • test_first_archive_rejection_reported_regardless_of_order[first-rejection-wins] -- replaced archive_error = archive_error or last_error with last-wins; test FAILED as expected; guard restored.
  • test_first_archive_rejection_reported_regardless_of_order[404-then-rejection] -- deleted the ArchiveError-branch capture; test FAILED as expected; guard restored.

Lint contract

ruff check and ruff format --check (src/, tests/, architecture linter scripts) both silent; pylint R0801 10.00/10; lint-auth-signals.sh and lint-architecture-boundaries.sh exit 0.

CI

All 27 checks green at 183b678 (CI, Merge Gate, Spec conformance, CodeQL, NOTICE Drift, Deploy Docs, license/cla) (after 0 CI fix iteration(s)).

Mergeability status

PR head SHA CEO stance iters folds defers Copilot rounds CI mergeable mergeStateStatus notes
#3375 183b678 ship_now 1 3 0 2 green MERGEABLE BLOCKED pending required review

Convergence

1 outer iteration(s); 2 Copilot round(s). Final panel stance: ship_now.

Ready for maintainer review.

This panel is advisory. It does not block merge. Re-apply the
panel-review label after addressing feedback to re-run.


Generated by autopilot-pr-merge-worker. This comment is AI-generated and may contain errors.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@danielmeppiel
Merge origin/main into fix/proxy-archive-error-diagnostic
806228c

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

Copilot code review Copilot
Copilot review effort
Applies to this pull request for everyone.Learn more about Copilot code review.
Copilot left review comments
@sergio-sisternes-epam Sergio Sisternes (sergio-sisternes-epam) sergio-sisternes-epam approved these changes
@danielmeppiel Daniel Meppiel (danielmeppiel) Awaiting requested review from danielmeppiel danielmeppiel is a code owner

At least 0 approving reviews are required to merge this pull request.

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

area/enterprise Air-gapped/GHE configurability, registry proxy, rulesets, adoption playbook. status/accepted Human scope approval; verify the issue's approval record and review contact before work. theme/security Secure by default. Content scanning, lockfile integrity, MCP trust boundaries. triage/recommended Automated advice completed; not human scope approval. type/bug Something does not work as documented.

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

4 participants

@MohammedAlkindi @sergio-sisternes-epam @danielmeppiel
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.