Skip to content

qargi 0.3.0

Latest

Choose a tag to compare

@github-actions github-actions released this 15 Nov 00:24

Added

  • Graph timestamps restrict hours to 00 through 23 consistently across Python runtimes. Direct-reader tests suppress bytecode writes, and the reader contract documents import-cache behavior and unresolved paths in invalid reports.
  • qargi backlog graph check|show|why --graph FILE inspects a closed native v1 graph against the configured open backlog. It validates declared relationships, pins reported evidence to parser source revisions, propagates unknown prerequisites conservatively, and explains proposed needs and stale evidence with deterministic reports. Complete explanation paths can have quadratic output size. Contains edges describe structure. Archives and feature lifecycle have unknown observation state. Evaluation and execution follow existing governance. The public contract in docs/reference/backlog-graph.md documents manual editing, the current lead-only guard boundary and compatibility limits.
  • Backlog graph reports malformed input paths, including configured backlog.file values containing NUL or unencodable Unicode, as input-unreadable findings with valid:false JSON and exit 1 instead of a traceback. Unread inputs retain null digests, and ordinary filesystem errors retain their diagnostics. Text reports escape non-printable controls and characters that the output encoding cannot represent while preserving printable Unicode.
  • Graph source paths use a literal leading-tilde replacement with raw HOME for repository and backlog paths. The public contract documents bounded differences from Bash replacement of & and shell stripping of NUL/trailing newlines. Source and graph paths retain symlink and parent segments so the kernel selects the intended bytes. Empty and false section values are unset, and the read-only graph can observe an absolute backlog after its checkout has gone. Confirmed structure errors name participating nodes and relations, and the public contract specifies report reasons and first-error behavior. The public graph command remains lead-only with a precise guard denial; members may run the pure Python reader directly. Fixed ISO-date cases run on the current tested runtime without certifying a Python 3.11 runtime.
  • Fast plans using --changed-files add the full-tier strict literal converter subset when CHANGELOG.md changes. An empty changed-file list excludes this subset from fast selection. Whole runs retain both the subset and the complete site step.

Changed

  • Shared project inference introduces a breaking change to leading-tilde repository matching. It treats any leading tilde in repo.path, including ~name, as the raw HOME prefix plus the remaining text, rather than expanding a named user's home. With HOME unset it uses an empty prefix in place of the former password-database fallback. This follows ordinary backlog prefix rules with the documented Bash & exception; explicit project arguments and QARGI_PROJECT retain precedence.
  • The graph v1 input contract requires Unicode scalar values in free-text by, basis and ref fields. Escaped lone surrogates produce invalid provenance reports; valid surrogate pairs and printable Unicode remain supported. This does not establish general JSON security.

Fixed

  • Graph inputs preserve terminal slash and /./ kernel semantics instead of silently opening a regular file after path normalization. Deeply nested unrelated registry JSON is skipped by shared inference, and a selected deep project configuration yields an invalid graph report. Relative graph paths from an unavailable current directory produce input-unreadable; absolute inputs remain usable with an accessible configuration and explicit project. The public shell entrypoints may still print getcwd startup warnings. backlog list, add and done require a repository marker even though graph observation of an absolute backlog does not.