Skip to content

v1.3.1

Choose a tag to compare

@github-actions github-actions released this 24 Sep 10:47
  • Fixed: the nested AGENTS.md path report budget is metered on each path's final serializable
    representation — escaped with the same display escaping the document emits, then measured as the
    JSON string bytes actually written, including quoting, the array separator and, for the first
    entry, the array's own brackets — instead of on pre-escape path bytes. Escape-dense names
    (backticks, undecodable byte sequences) could previously make the emitted nested_context.files
    carry several times the documented 4 KiB; because quoting is now counted, an array whose total is
    already near 4 KiB can also admit one entry fewer even with ordinary names. Both are value changes
    in that one field and in the two signals derived from it — list_truncated can become true and the
    nested_agents_list_truncated status can appear where 1.3.0 reported neither — while no key set
    changes, so schema_version stays 3/4 and list_truncated keeps its meaning.
  • Added: --format json and --format json-compact enforce a bound on the final serialized
    document (8,388,608 bytes including the trailing newline). The bound is fail-closed: an
    over-budget repository exits 1 with an empty stdout and a one-line diagnostic rather than emitting
    a document the declared contract cannot describe. It is a backstop, not an expected truncation
    point: the component budgets cap the rendered context at 98,304 Markdown bytes and the repeated
    source bodies at 56 KiB before escaping, the nested path list at 4 KiB after escaping, and
    statuses at the 300-entry directory tree and 100 working-tree changes — the worst audited
    escape-dense repository measured 248 KiB of escaped subjects and 263 KiB for the whole document,
    so no run that succeeds today starts failing from this bound.
  • Docs: "Limits" now states a per-format final bound (Markdown 98,304 bytes; JSON and
    JSON-compact 8 MiB serialized document) instead of one figure that only described Markdown, since
    the machine formats legitimately carry the rendered context plus a second copy of every source
    body and cannot share the Markdown cap. The same section now states the remaining asymmetry this
    audit exposed and a new test pins it: nested_context paths and statuses subjects are escaped,
    while repository and sources[*].path are emitted verbatim, so a repository root containing
    bytes the filesystem could not decode renders as Markdown but makes --format json and
    --format json-compact exit 1. Escaping those two fields is a separate published-value change
    with its own consumer impact, so it is deliberately not folded into this budget correction.
  • Preserve: Markdown bytes, the default format, every flag and exit code other than the new
    over-budget JSON case, schema_version 3 and 4, contract_version 3, the collection scope and the
    Authority Boundary are unchanged; on ordinary repositories all three formats produce the same
    bytes as 1.3.0.

Package: https://pypi.org/project/context-loader/1.3.1/

Source commit: aab62912762864c9761d04551cd1b97bbb721bf8