Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

4.0.0 release readiness (pre-release review)

Open
#665 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
5/100
Issue type
Refactor
Clarity
Needs clarification
Activity status
Active
Tech stack
php
Domain
release

Research direction

This is a tracking umbrella for the 4.0.0 pre-release review, not a single change; the real work lives in the sub-issues #666-#704 plus the Windows CI follow-up #726, and every line reference is pinned to commit a5a1504. Start by reading the sub-issue that matches your interest (the still-open T-32 #696 is explicitly deferred past 4.0.0) and its path:line pointers under src/, tests/ and the docs. "Done" here means the listed sub-issues are closed and 4.0.0 is tagged, so it is coordination rather than a first patch.

Written by the indexing model from the issue text.

Description

Tracking issue for the final quality pass before tagging 4.0.0. The review covered every file in src/, the test infrastructure, docs, demos, CI and packaging. Every claim was rechecked against a5a1504. Line references in the sub-issues are path:line at that commit.

Priorities:

  • P0: must be fixed, or explicitly decided, before tagging.
  • P1: ships in 4.0.0, either because it needs the BC window or because users can see the bug.
  • P2: can land in 4.0.x, unless the ticket is marked [BC].

Each sub-issue is meant to become its own commit or PR.

Decisions needed before code

  • T-06 #671: Doctrine bridge. Keep and rewrite against ORM 3, or remove.
  • T-17 #640: deterministic pointcut ids (hash of expression + aspect) instead of a static counter.
  • T-20 #684: which of the renames happen in 4.0.
  • T-22 #686: Foo+ semantics (include Foo itself? trait users?) and modifier precedence.
  • T-30 #694: Features as a final class vs an enum Feature + FeatureSet.

P0: must fix or decide before tagging

  • #666 T-01 README correctness fixes
  • #667 T-02 CHANGELOG completeness + UPGRADE-4.0.md
  • #668 T-03 Generated proxies fail to compile on use name collisions
  • #669 T-04 Intercepted property declarations spanning several lines are not neutralized
  • #670 T-05 Route all woven/proxy/function cache writes through CacheFileWriter
  • #671 T-06 Doctrine bridge: decide keep+rewrite or remove [BC]

P1: ship in 4.0.0

  • #672 T-07 Joinpoint state bugs (constructor $instance, reentrancy)
  • #673 T-08 First instance of every proxied class is retained [BC]
  • #674 T-09 cache:warmup:aop exits 0 on errors
  • #675 T-10 Test-suite portability and temp-dir convention
  • #676 T-11 Remove or rewrite Php85AuditScratchTest
  • #677 T-12 Packaging: .gitattributes, .gitignore, composer.json
  • #678 T-13 Community / release files
  • #679 T-14 Debug mode serves un-rewritten magic constants on cache hit [BC]
  • #680 T-15 Advisor cache semantics
  • #681 T-16 Attribute loading robustness [BC]
  • #640 T-17 Pointcut ids depend on registration order (promoted to 4.0.0) [BC]
  • #682 T-18 Prefix-anchored path mapping
  • #683 T-19 Exception hierarchy [BC]
  • #684 T-20 Naming decisions for the BC window [BC]
  • #685 T-21 Cache metadata format version + real source mtime [BC]
  • #686 T-22 Pointcut semantics defects [BC]
  • #687 T-23 PointcutParseTable regeneration script + consistency test
  • #688 T-24 README feature documentation

P2: 4.0.x acceptable unless [BC]

  • #689 T-25 Kernel option validation [BC]
  • #690 T-26 Dead Dissect exclusion / auto-exclude runtime deps
  • #691 T-27 final / @internal / #[\Override] sweep [BC]
  • #692 T-28 Dead code sweep [BC]
  • #693 T-29 Docblock / comment drift sweep
  • #694 T-30 Features shape [BC]
  • #695 T-31 Weaving-time and runtime performance
  • #696 T-32 Cache layer robustness — deferred past 4.0.0 (Known Issue)
  • #697 T-33 Enumerator / PathResolver correctness
  • #698 T-34 Token-surgery robustness
  • #699 T-35 Console DX
  • #700 T-36 Generated-code edge cases
  • #701 T-37 Test coverage gaps
  • #702 T-38 CI and static-analysis hygiene
  • #703 T-39 Demos refresh
  • #704 T-40 Static-state and loader robustness
  • Follow-up: Windows CI leg + test portability (#726)

Claims dropped or corrected during the recheck

Dropped:

  • T-22: "within() / ** never select introductions". IntroductionAspectExtension forces KIND_INTRODUCTION | KIND_CLASS, so they do.
  • T-24: "docs/ links missing". The README already links both limitation docs.
  • T-37: "abstract-class fixture missing". It exists (tests/Instrument/Transformer/_files/abstract-class.php).
  • T-12: ".idea/ makes the tree dirty". The tree is clean; adding /.idea/ is kept only as hygiene.
  • T-29: "smiley/typos list". The items were never enumerated, so this could not be verified.

Corrected:

  • T-02: 18 [BC BREAK] entries, not 13.
  • T-23: the table is about 12 KB, not 15 KB.
  • T-31: about 1,600 internal functions, not 2,000.
  • T-27: about 20 missing #[\Override], not 11.
  • T-17: a reorder silently rebinds only when the sanitized expressions are equal; otherwise it throws OutOfBoundsException.
  • T-14: the scope is wider than first stated. Production is hit too, through includes inside woven files.

Generated by Claude Code

Dominant language
PHP
Stars
1.7k
Forks
166
Avg merge
10h
Merged PRs (30d)
35

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from goaop/framework

All issues in goaop/framework

Similar issues

More PHP issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.