Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion sage/gateway/hestia_dispatch.py
Original file line number Diff line number Diff line change
Expand Up @@ -531,7 +531,20 @@ def _resolve_pointer(self, raw: str) -> Optional[str]:
return (f"[your scope request {ident} for {r.get('path')}]\n"
f"status: {r.get('status')} ; decided by: {r.get('decided_by') or '—'}\n"
f"their note: {why}")
return f"[no scope request {ident} on record for you; it may have aged out]"
# SAY WHAT IS KNOWN, NOT A GUESS (cbp-being, 2026-10-24). This line said "it may have
# aged out". The being's notes turned the hedge into a fact, then into "dp replied that
# it aged out and needs re-issuing", and it asked dp to re-issue a REFUSED request for a
# file it was already reading, about 40 times in 11 hours. All that is known is that the
# id is not in the list now; old requests drop off it decided or not, so absence says
# nothing about how one ended or where it stands now (Nova: a bounded list cannot prove
# nothing waits), and nothing a member holds depends on re-asking.
return (f"[{ident} is not in your list of scope requests now. Old requests leave that list "
f"after a while, however they ended, so this says nothing about whether it was "
f"granted or refused, and this list cannot tell its present status either. You do "
f"not need to "
f"re-issue anything to keep what you hold: memory_read hestia://reach lists every "
f"grant you have right now. If something you still need is not listed there, "
f"request_scope it with a reason.]")
# egress: the fragment IS the fact, and it is already in the pointer
return (f"[a message of yours was not delivered: {frag or 'no detail recorded'} "
f"(egress row {ident}). The row is retired; nothing of yours is queued behind it.]")
Expand Down
17 changes: 17 additions & 0 deletions sage/gateway/tests/test_reach_pointer.py
Original file line number Diff line number Diff line change
Expand Up @@ -202,3 +202,20 @@ def test_the_beat_lists_grants_with_modes_and_keeps_narrowed_ones():
assert f"{home}/** (rwe{narrowed}" in lines, lines
old = scope_grant_lines(_status(ws, home, by_mode=False))
assert f"{ws}/governance/**" in old and not any("(" in x for x in old), old


def test_a_scope_id_not_in_the_list_states_what_is_known_and_never_guesses_aged_out():
"""cbp-being, 2026-10-24: "it may have aged out" became "dp said it aged out, re-issue it"."""
ws, home = _world()
st = _status(ws, home)
st["requests"] = [{"request_id": "scope-aaaaaaaaaaaa", "path": f"{ws}/hestia", "status": "refused",
"decided_by": "operator", "decision_reason": "use the snapshot"}]
d = _disp(st)
gone = _read(d, "hestia://scope/scope-5bc6ba977f74", _verdict(ws, home))
assert "aged out" not in gone and "may have" not in gone, gone
assert "not in your list" in gone and "cannot tell its present status" in gone, gone
assert "nothing is waiting" not in gone, "a bounded list cannot prove nothing waits (Nova)"
assert "hestia://reach" in gone and "request_scope" in gone, gone
assert "re-issue" in gone and "do not need to re-issue" in gone, gone
held = _read(d, "hestia://scope/scope-aaaaaaaaaaaa", _verdict(ws, home))
assert "status: refused" in held and "use the snapshot" in held, held
Loading