Skip to content

FIX-09: honest awaiting-timestamp disclosure at export#33

Open
ChelseaKR wants to merge 1 commit into
mainfrom
roadmap/fix-09-honest-awaiting-timestamp-state-a
Open

FIX-09: honest awaiting-timestamp disclosure at export#33
ChelseaKR wants to merge 1 commit into
mainfrom
roadmap/fix-09-honest-awaiting-timestamp-state-a

Conversation

@ChelseaKR

Copy link
Copy Markdown
Owner

A packet with un-timestamped items previously exported silently, and only
verified as "NOT intact" when a recipient ran habitable verify. Surface the
state honestly at export instead (option (b) from the roadmap; no hard
--allow-incomplete gate, the export never fails).

  • packet.py: build_packet computes awaiting = item_count - timestamped and,
    when > 0, _disclosures appends a plain-language note. This propagates
    automatically to bundle.json "disclosures", ExportResult.disclosures, the CLI
    print loop, and the app export result.
  • disclosure.py: new localized awaiting_timestamp_note (EN/ES), following the
    privacy_originals_warning pattern. The copy is precise not to imply an
    awaiting item is worthless: its content hash still anchors it at capture; only
    the upper-bound date is missing.
  • htmlpacket.py / pdf.py: read the awaiting count from the appendix and render
    the localized note in the packet's own disclosure section when awaiting > 0.
  • tests: a mixed vault (one stamped, one deferred) asserts the note appears in
    ExportResult, bundle.json, and the packet HTML, and is absent when every item
    is timestamped.
  • docs/ideation/02-large-scale-fixes.md: mark FIX-09 done.

Co-Authored-By: Claude Fable 5 noreply@anthropic.com


Backfill PR for a completed roadmap item (roadmap/fix-09-honest-awaiting-timestamp-state-a, 1 commit(s) over main). Part of the portfolio roadmap batch.

A packet with un-timestamped items previously exported silently, and only
verified as "NOT intact" when a recipient ran `habitable verify`. Surface the
state honestly at export instead (option (b) from the roadmap; no hard
--allow-incomplete gate, the export never fails).

- packet.py: build_packet computes awaiting = item_count - timestamped and,
  when > 0, _disclosures appends a plain-language note. This propagates
  automatically to bundle.json "disclosures", ExportResult.disclosures, the CLI
  print loop, and the app export result.
- disclosure.py: new localized awaiting_timestamp_note (EN/ES), following the
  privacy_originals_warning pattern. The copy is precise not to imply an
  awaiting item is worthless: its content hash still anchors it at capture; only
  the upper-bound date is missing.
- htmlpacket.py / pdf.py: read the awaiting count from the appendix and render
  the localized note in the packet's own disclosure section when awaiting > 0.
- tests: a mixed vault (one stamped, one deferred) asserts the note appears in
  ExportResult, bundle.json, and the packet HTML, and is absent when every item
  is timestamped.
- docs/ideation/02-large-scale-fixes.md: mark FIX-09 done.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants