Finance now requires the Decision's exact baseline PortfolioSnapshot to remain the current portfolio state when the Decision is re-evaluated and again when a Proposal is created.
The Decision did not become false
Suppose an Agent evaluates a state-changing capital action against portfolio state S0.
The evidence is available. The comparison against NO-OP supports change. The Decision names S0 explicitly and passes every rule that exists at that moment.
Then something else changes the portfolio.
10:00 Decision D is evaluated against S0
10:03 portfolio changes to S1
10:05 a caller tries to create Proposal P from D
Nothing about the historical record of D has been corrupted. Its evidence can still be authentic. Its original reasoning can still be coherent.
But the action would no longer land in the world the Decision evaluated.
The Decision can remain valid as history while becoming stale as authority for a new state-changing commitment.
Finance made the baseline an exact object
State-changing Finance Decisions already carried an explicit NO-OP baseline. The currentness repair made one additional relationship consequential: the Decision's baseline.portfolioStateRef must match the current PortfolioSnapshot used by Capital Rationality.
Decision baseline = snapshot://S0
Current portfolio = snapshot://S0
→ current baseline check PASS
Decision baseline = snapshot://S0
Current portfolio = snapshot://S1
→ current baseline check FAIL
→ rebase-decision-to-current-portfolio-state
If current portfolio state cannot be observed at all, Finance does not guess. The check becomes UNKNOWN and requests a refresh of current portfolio state.
This is deliberately narrower than “the Decision is older than five minutes” or “the repository generation changed.” The relevant dependency is the capital state the action would actually modify.
One test preserved the old answer and blocked the new action
The regression fixture creates one state-changing Decision against a known baseline, records it, and then advances the PortfolioSnapshot.
Finance evaluates the same immutable Decision under two semantics.
The historical answer is intentionally not rewritten. Finance can still reproduce why the Decision looked coherent under the old contract.
The current answer is different because the consumer is different: it is asking whether the Decision may govern a consequence now.
Replay asks what the Decision meant then. Commitment admission asks whether its baseline still governs the world now.
Proposal creation checks again
A second test closes a subtler hole.
Imagine the Decision was evaluated while S0 was current. Its assessment is recorded as proposal-eligible. Only after that does the portfolio advance to S1.
If Proposal creation trusted the old eligibility bit forever, the stale action could still escape.
So proposal.create@2 re-evaluates current Capital Rationality and compares the current snapshot with the Decision baseline again.
Decision D @ S0
→ Assessment A = eligible
→ portfolio advances to S1
→ create Proposal from D + A
→ REJECT: Decision baseline must match current portfolio state
The assessment was not “wrong.” It simply cannot mint permanent authority over a state that may later change.
The Agent gets a repair path, not a dead end
Blocking a stale Decision is useful only if the system can say what became stale.
Agent Context v19 turns the failed baseline check into a bounded obligation:
need: rebase-decision-to-current-portfolio-state
candidate operation: finance.decide
target: the exact stale Decision
The repair is not “rerun everything.” It is not “discard all old research.” It is not “assume the action is still good because nothing obvious changed.”
The Agent goes back to the semantic boundary that owns the stale commitment and decides again against current state.
This is not the same as stale evidence
Ordivon already had a narrower result: authentic evidence can remain byte-for-byte valid while the dependency it described changes.
Decision currentness is one step farther downstream.
Evidence currentness
→ may this evidence still support this claim?
Decision currentness
→ may this already-formed judgment still govern this state-changing commitment?
A system can get the first question right and still fail the second. The evidence used by a Decision might remain valid while the portfolio itself has changed for an entirely different reason.
That is why currentness cannot stop at research admission.
The general lesson is smaller than a global currentness engine
This experiment does not justify one universal service that marks every Decision, Task, credential, route, model, or artifact fresh or stale.
Finance has a particularly strong local dependency: state-changing capital decisions are defined relative to an exact portfolio baseline. Other domains can have different commitment identities and different revalidation boundaries.
The transferable rule is narrower:
When an action is consequential, revalidate the load-bearing state that made the commitment admissible before letting that commitment create a new effect.
If the dependency is still current, continue. If it changed, rebase. If it cannot be observed, preserve UNKNOWN.
What this does not prove
It does not prove that every old Decision should be invalidated by time. It does not make Finance a global scheduler. It does not make a portfolio snapshot a universal currentness object.
It also does not activate live trading. The current public Finance boundary still treats external financial submission as a separate fail-closed deployment question.
The difficult part of durable Agent work is not only remembering what was decided. It is knowing when a remembered decision has lost the right to move the current world.
Primary record