You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Goal (outcome).ReflectiveBoundary carries no albedo parameter, because a partially-reflecting wall is AlbedoBoundary — one law per physical thing, and the parameter that used to blur them is gone.
Context: B5 is ~2/3 DISSOLVED, and this is what is left
Campaign phase B5 (.claude/plans/boundary_machinery_review.md:1223-1238) was written as "type white's realized operator as the rank-one it is; add apply_transpose AND flip is_adjointable; unblock #300." Reconciled [M] 2026-08-14 at 0f5ca91c, most of it has already happened by a different route:
⛔ "Type AngularAverageOperator.apply as the rank-one it is" — the operator is RETIRED (b4f0f5c9, "retire AngularAverageOperator onto the factored chain"). It was factored, not re-typed: PartialCurrentOperator (orpheus/sn/boundary/angular.py:65) @IsotropicEmissionOperator (:191). Every surviving mention is past-tense history.
⛔ "C-2: two-part or it is a no-op — add apply_transposeand flip is_adjointable" — done at G6.3 step 3, and orpheus/geometry/boundary/_factors.py:1135-1150 says so in place: "FLIPPED 2026-08-04 at G6.3 step 3 (numerics: spaces MANDATORY on every operator, and the SPACE owns shape + traversal (book-keeping is not math) #330), which absorbed the B5 step this comment was waiting on. … Factoring the realization into PartialCurrentOperator @ IsotropicEmissionOperatorREMOVED the ambiguity rather than resolving it: each link has ONE honest transpose."
⟹ A future session must re-derive B5's scope from the tree, not from :1223-1238 — that section describes an operator that no longer exists and a flip that already happened.
What genuinely remains
1. Retire ReflectiveBoundary.albedo — this issue
[M] three forward references still promise it and are the greppable surface:
orpheus/geometry/boundary/_factors.py:130 — "retiring the parameter is campaign phase B5"
orpheus/geometry/boundary/_factors.py:1197 — "retired in phase B5"
docs/theory/foundations/boundary_conditions.rst:627 — same claim
⚠ Owed the full three-search retirement audit (.claude/rules/coding-standards.md): graph callers, text grep across code + tests + docs/split by TENSE (past-tense history STAYS), and direct constructors. Note orpheus.geometry.boundary IS partly rendered, so some xrefs here are-W-gated — unlike orpheus.numerics.operator, where B3.3 measured that grep is the only gate.
⚠ Also check the marker migration: any catches(...) / verifies(...) on tests that pin the parameter.
2. The composite B.H-with-white gate — NOT this issue, it is a #189 dependency
B5's stated gate is "B.H works with a white face installed". [M] the leaf half is done (above), but SNMesh.BOUNDARY_OPERATOR_REGISTRY == ['reflective', 'vacuum'] — white cannot be tag-installed on an SN face at all, so the composite gate is gated behind #189, i.e. behind campaign phase B6. Do not attempt it here.
Goal (outcome).
ReflectiveBoundarycarries noalbedoparameter, because a partially-reflecting wall isAlbedoBoundary— one law per physical thing, and the parameter that used to blur them is gone.Context: B5 is ~2/3 DISSOLVED, and this is what is left
Campaign phase B5 (
.claude/plans/boundary_machinery_review.md:1223-1238) was written as "type white's realized operator as the rank-one it is; addapply_transposeAND flipis_adjointable; unblock #300." Reconciled[M]2026-08-14 at0f5ca91c, most of it has already happened by a different route:AngularAverageOperator.applyas the rank-one it is" — the operator is RETIRED (b4f0f5c9, "retire AngularAverageOperator onto the factored chain"). It was factored, not re-typed:PartialCurrentOperator(orpheus/sn/boundary/angular.py:65)@IsotropicEmissionOperator(:191). Every surviving mention is past-tense history.apply_transposeand flipis_adjointable" — done at G6.3 step 3, andorpheus/geometry/boundary/_factors.py:1135-1150says so in place: "FLIPPED 2026-08-04 at G6.3 step 3 (numerics: spaces MANDATORY on every operator, and the SPACE owns shape + traversal (book-keeping is not math) #330), which absorbed the B5 step this comment was waiting on. … Factoring the realization intoPartialCurrentOperator @ IsotropicEmissionOperatorREMOVED the ambiguity rather than resolving it: each link has ONE honest transpose."[M]white realizes adjointable today:SNBoundaryRealizer().realize(WhiteBoundary(...), space)→TensorProductOperator,is_adjointable = True,apply_transposereturns.⟹ A future session must re-derive B5's scope from the tree, not from
:1223-1238— that section describes an operator that no longer exists and a flip that already happened.What genuinely remains
1. Retire
ReflectiveBoundary.albedo— this issue[M]three forward references still promise it and are the greppable surface:orpheus/geometry/boundary/_factors.py:130— "retiring the parameter is campaign phase B5"orpheus/geometry/boundary/_factors.py:1197— "retired in phase B5"docs/theory/foundations/boundary_conditions.rst:627— same claim⚠ Owed the full three-search retirement audit (
.claude/rules/coding-standards.md): graph callers, text grep across code + tests +docs/split by TENSE (past-tense history STAYS), and direct constructors. Noteorpheus.geometry.boundaryIS partly rendered, so some xrefs here are-W-gated — unlikeorpheus.numerics.operator, where B3.3 measured that grep is the only gate.⚠ Also check the marker migration: any
catches(...)/verifies(...)on tests that pin the parameter.2. The composite
B.H-with-white gate — NOT this issue, it is a #189 dependencyB5's stated gate is "
B.Hworks with a white face installed".[M]the leaf half is done (above), butSNMesh.BOUNDARY_OPERATOR_REGISTRY == ['reflective', 'vacuum']— white cannot be tag-installed on an SN face at all, so the composite gate is gated behind #189, i.e. behind campaign phase B6. Do not attempt it here.3. #300 stays open
"Unblocks #300 (Woodbury on the rank-1
B)" — #300 is still OPEN and is the real payoff of the rank-one typing.Spun out of the B4–B7 reconciliation; sibling: #367 (B4).