Commit 06ddf4f
committed
docs(gh62): round-6 demand-driven D8 redesign — 5 artefacts (refs #62)
Round-6 cross-LLM review (opus47_deep + codex_gpt5 + gemini + deepseek)
empirically verified the round-5 D8 scope against the corpus and the
compiled monitor bytecode and surfaced three premises that did not hold:
1. Monitor bytecode has zero org.aspectj.* references (the round-5
"WRONG-DATA in production" framing described a flow that does not
execute — signatureFor() has zero callers in production).
2. AspectDescriptor.namedPointcuts() does not exist (round-5 §4.M.5
silently assumed a cross-repo schema change that was never planned).
3. Round-5 nominal-family scope (Reflective API + Matcher Correctness)
misses the largest measured gap: condition(...) MOP-extension guard
appears in 74 sites and was conflated with AspectJ if() PCD which
has zero .mop source demand.
Round-6 replaces nominal-family scope with eight demand-driven closures:
- §4.G condition(...) MOP guard emit (74 sites)
- §4.W positive within(typePattern) matcher (28 sites)
- §4.O T+ in call() owner position (~73 sites)
- §4.N !target(T)/!args(T) parser specialization (32 sites)
- §4.X method-name glob name* (~16 sites)
- §4.S __STATICSIG JavaMOP macro support (3 sites)
- §4.Y staticinitialization synthesis when <clinit> absent (6 sites)
- §4.T after() throwing(...) end-to-end install (2 sites)
Plus zero-cost matcher fix:
- §4.D NamedRefPC resolver via existing AspectDescriptor.getCommonPointcut()
Dropped from round-5: br.unb.cic.rv.aspectjlang.* shipped runtime (~600 LOC
for 0 demand sites), standalone TargetPC/ArgsPC (0 sites), !cflow/!if/!handler
parseUnary specialization (0 sites), ThisJoinPointEmitter rewrite cascade,
coverage-weaver alignment (defect inexistent — SignatureFormatter already
correct).
Smoke validation §6.S replaces round-5 ±5% event-count parity gate with
three demand-driven gates: A) no new VerifyError (hard); B) monotonic
non-decrease event count (hard); C) per-closure positive evidence (hard —
each of the 8 closures + namedref MUST produce ≥1 new event in ≥1 APK).
INV-INS-94 (round-6) covers all 8 demand-driven closures + NamedRefPC
resolver. INV-INS-95 becomes advisory LOC-vs-matrix-delta tripwire.
Empirical verification commands documented in commit (see ledger.md and
proposal.md §"Scope expansion (round-6 demand-driven D8)"). openspec
validate --strict PASS.
5 files changed; round-5 nominal-family scope replaced by demand-driven
gap closures; ~530-580 LOC realistic production budget vs round-5's
nominal 700-1000 (and ~1500-2000 if the round-5 premises had been actually
implemented).1 parent c5d870c commit 06ddf4f
5 files changed
Lines changed: 249 additions & 138 deletions
File tree
- rv-android/openspec/changes/gh62-aspectj-grammar-coverage
- specs/instrumentation
0 commit comments