fix: Windows reads of lock files, update paths cfg(unix), merge main again (P11c)
spec_vault swept every file under a book, lock files included; on Windows a held LockFileEx lock is mandatory and the read failed. The locks are already dedicated files (never data), so the test skips *.lock. Merged main (P13 step 6, the macOS server.log assert, P11a's AppImage identity): host.rs keeps main's five-field identity on Unix and size/last-write on Windows; the update poll and set_program_version are Unix-only. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HS8WZziDnyxunC23MUxrLp
This commit is contained in:
commit
7749afc557
234 files changed
+13028
-18411
No files matched your search
@@ -449,6 +449,55 @@ pub fn describe(b: &Books, line: &JournalLine) -> Option<Event> {
|
||||
format!("Draft #{id} discarded: {}", s(p, "reason")),
|
||||
None,
|
||||
),
|
||||
// Audits and attestations (plan P8): claims about the books, not
|
||||
// figures.
|
||||
"audit.run" => ev(
|
||||
icon::MAGNIFYING_GLASS,
|
||||
format!(
|
||||
"Audit {} through {}",
|
||||
s(p, "scope").replace('_', " "),
|
||||
s(p, "through")
|
||||
),
|
||||
None,
|
||||
),
|
||||
"receipt.attested" => ev(
|
||||
icon::CHECK_CIRCLE,
|
||||
if p.get("disagrees").and_then(|v| v.as_bool()) == Some(true) {
|
||||
format!(
|
||||
"{} read {} against entry #{}: it disagrees",
|
||||
s(p, "by"),
|
||||
attachment_name(b, att),
|
||||
p.get("entry_id").and_then(|v| v.as_u64()).unwrap_or(0)
|
||||
)
|
||||
} else {
|
||||
format!(
|
||||
"{} attested {} for entry #{}",
|
||||
s(p, "by"),
|
||||
attachment_name(b, att),
|
||||
p.get("entry_id").and_then(|v| v.as_u64()).unwrap_or(0)
|
||||
)
|
||||
},
|
||||
Some(Route::Document(att)),
|
||||
),
|
||||
"entry.reviewed" => ev(
|
||||
icon::CHECK_CIRCLE,
|
||||
format!(
|
||||
"{} reviewed entry #{}",
|
||||
s(p, "by"),
|
||||
p.get("entry_id").and_then(|v| v.as_u64()).unwrap_or(0)
|
||||
),
|
||||
p.get("entry_id").and_then(|v| v.as_u64()).map(Route::Entry),
|
||||
),
|
||||
"period.attested" => ev(
|
||||
icon::CHECK_CIRCLE,
|
||||
format!(
|
||||
"{} attested period #{} on audit #{}",
|
||||
s(p, "by"),
|
||||
p.get("period_id").and_then(|v| v.as_u64()).unwrap_or(0),
|
||||
p.get("audit_run_id").and_then(|v| v.as_u64()).unwrap_or(0)
|
||||
),
|
||||
None,
|
||||
),
|
||||
"entry.settles" => {
|
||||
let settles: Vec<String> = p
|
||||
.get("settles")
|
||||
@@ -1172,6 +1221,26 @@ pub fn describe(b: &Books, line: &JournalLine) -> Option<Event> {
|
||||
format!("Open item #{id} resolved: {}", s(p, "resolution")),
|
||||
Some(Route::Company),
|
||||
),
|
||||
"convention.source_revised" => ev(
|
||||
icon::SCROLL,
|
||||
format!(
|
||||
"Source of convention {} corrected to {}: {}",
|
||||
s(p, "id"),
|
||||
s(&p["source"], "decided_by"),
|
||||
s(p, "reason")
|
||||
),
|
||||
Some(Route::Company),
|
||||
),
|
||||
"decision.source_revised" => ev(
|
||||
icon::GAVEL,
|
||||
format!("Source of decision #{id} corrected: {}", s(p, "reason")),
|
||||
Some(Route::Company),
|
||||
),
|
||||
"open_item.source_revised" => ev(
|
||||
icon::CHECK_CIRCLE,
|
||||
format!("Source of open item #{id} corrected: {}", s(p, "reason")),
|
||||
Some(Route::Company),
|
||||
),
|
||||
"entry.approved" => ev(
|
||||
icon::SEAL_CHECK,
|
||||
format!(
|
||||
|
||||
@@ -88,7 +88,11 @@ fn says_update(text: &str) {
|
||||
#[test]
|
||||
fn the_viewer_says_update_for_newer_books_and_corrupt_for_damaged_ones() {
|
||||
for (tag, line_type, payload) in [
|
||||
("type", "period.attested", json!({"key": "company.name"})),
|
||||
(
|
||||
"type",
|
||||
"ledger.not_yet_written",
|
||||
json!({"key": "company.name"}),
|
||||
),
|
||||
(
|
||||
"format",
|
||||
"journal.format_set",
|
||||
|
||||
Reference in new issue
Block a user