Scribe is renamed Fabled Grimoire #212

Merged
bvandeusen merged 78 commits from dev into main 2026-10-22 14:20:16 -04:00
3 changed files with 10 additions and 11 deletions
Showing only changes of commit 87e8f8f777 - Show all commits
+2 -2
View File
@@ -1,8 +1,8 @@
"""A small S3 client for sending backups: AWS Signature Version 4 over httpx,
path-style addressing (endpoint/bucket/key), and the two calls a backup needs.
Ported from FabledSteward's `steward/backup/s3.py`, which is tested against
the same AWS examples as tests/test_services_backup_s3.py.
The signing is checked against AWS's published SigV4 examples in
tests/test_services_backup_s3.py.
Scribe puts and lists; it never deletes. The bucket keeps the history and
thins it on its own policy, so a key that may only add objects is enough —
+6 -7
View File
@@ -324,8 +324,8 @@ def rule_brief(rule: Rule, **extra) -> dict:
of payload for a precision nobody reads.
`why` and `how_to_apply` are deliberately NOT here — they are the depth a
caller gets from get_rule, and putting them in every listing is the bloat
this milestone is about.
caller gets from get_rule, and putting them in every listing would bloat
every payload that lists rules.
"""
out = {
"id": rule.id,
@@ -1583,11 +1583,10 @@ async def rules_due_for_verification(
) -> list[Rule]:
"""Rules that carry a check, oldest verification first, never-checked top.
THE QUERY THIS MILESTONE EXISTS FOR. `verify_with` and `expires_when` are
storage; this is what turns them into something that gets acted on. The
307 audit cost a session and found four broken rules by luck — this makes
the same question a list, and staleness measurable by age instead of
discoverable by accident.
`verify_with` and `expires_when` are storage; this is what turns them into
something that gets acted on. Without it, finding broken rules takes an
audit and luck — this makes the same question a list, and staleness
measurable by age instead of discoverable by accident.
Ordered `verified_at` ASC NULLS FIRST: never-checked outranks
checked-long-ago, because a rule nobody has ever confirmed is a claim
+2 -2
View File
@@ -161,8 +161,8 @@ def summarise(outcomes: list[str]) -> dict:
`checked` is turns the question was put to (a first stop that wrote
something): passed + blocked. `asked` is the blocked ones. `left` is
asks the agent walked past — the stop after a block that still had
unjudged shapes. That last number is the slip the milestone exists to
make visible."""
unjudged shapes. That last number is the slip this check exists to make
visible."""
checked = sum(1 for o in outcomes if o in ("passed", "blocked"))
asked = sum(1 for o in outcomes if o == "blocked")
left = sum(1 for o in outcomes if o == "left_after_block")