Skip to content

release: v1.3.0 — honest partial-emit surfaces (wardline-7924d67d3b)#89

Merged
tachyon-beep merged 5 commits into
mainfrom
release/consolidation-2026-06-26
Jul 3, 2026
Merged

release: v1.3.0 — honest partial-emit surfaces (wardline-7924d67d3b)#89
tachyon-beep merged 5 commits into
mainfrom
release/consolidation-2026-06-26

Conversation

@tachyon-beep

Copy link
Copy Markdown
Collaborator

Cuts v1.3.0 from the consolidation line. The consolidation content itself (redirect hardening, concurrent-writer detection, MCP strict args) is already on main; this PR carries the final review-driven fixes plus the version bump:

Fixes (wardline-7924d67d3b — both P2 review findings)

  • CLI: partial Filigree emits are no longer reported as "findings written locally only". A mid-emit failure after chunks landed (transport drop, mid-batch 401/403/5xx) now renders the partial truth on stderr — chunks landed, created/updated counts, findings that did not land, and the producer warnings. The transport rung says connection dropped mid-emit instead of the first-contact could not reach Filigree.
  • CLI: partial Loomweave taint-fact writes are no longer hidden. A later-chunk outage/403 after earlier chunks committed now prints taint store partially written … N taint fact(s) committed before the failure instead of the flat not written.
  • filigree_disabled_reason is partial-aware (chunks_landed kwarg): the string scan-jobs persists as the terminal job error no longer flattens a mid-batch failure to filigree unreachable. Zero-chunk ladder bytes unchanged; MCP from-block goldens stay frozen.
  • Coverage: chunks_landed asserted on the mid-batch 401/403/5xx test parameterization; glossary line anchors re-pinned after the CLI edit.

Release

  • _version.py1.3.0; CHANGELOG [Unreleased] rolled into [1.3.0] - 2026-07-03; Keep-a-Changelog compare links repaired (stale since v1.0.6).
  • Minor bump: [1.3.0] adds concurrent-writer detection and the never-follow-redirects federation hardening.

Verification: full suite 4664 passed / 1 skipped; ruff + format + mypy clean; wardline scan . --fail-on ERROR gate PASSED. Tag v1.3.0 will be placed on the merge commit to trigger the PyPI publish workflow.

🤖 Generated with Claude Code

John Morrissey and others added 5 commits July 3, 2026 22:27
…cally only"

Review P2 pair: 89563f1 taught the producers to preserve partial-emit
truth (EmitResult.chunks_landed + accumulated counts/warnings on mid-batch
failures; WriteResult.written preserved on mid-batch outage/403), but the
CLI human rendering still branched on binary `reachable` and only rendered
counts in the reachable branch — so a mid-emit transport drop printed
"could not reach Filigree ... findings written locally only" after Filigree
had already ingested chunks and run mark_unseen, and a partial Loomweave
write printed "taint store not written" over committed facts.

The unreachable branches now discriminate partial evidence (chunks_landed
for Filigree, written for Loomweave — deliberate skips always carry
written=0) and render the counts, failed tally, and producer warnings in
every soft-failure sub-branch (auth / server error / transport). The
transport case names "connection dropped mid-emit" rather than the
first-contact "could not reach". Machine surfaces (agent-summary/MCP/
scan-job blocks) already carried this truth; the operator line no longer
contradicts them (PDR-0023 at the human surface).

Glossary line anchors for the scan summary/gate lines shifted +38 with the
edit; _ANCHORS and finding-lifecycle-vocabulary.md citations updated.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…d3b residuals)

filigree_disabled_reason now takes chunks_landed and stops flattening a
mid-batch failure to "filigree unreachable" — the string scan_jobs persists
verbatim as the terminal job `error` field. The transport rung becomes
"connection dropped mid-emit (K chunk(s) landed before the failure)"; the
401/403/5xx rungs keep their diagnosis and append the landed-chunk truth.
The result-based status builder threads EmitResult.chunks_landed through,
so the CLI agent-summary, scan-job status.json, and scan_file_findings
surfaces inherit the honest string; the MCP from-block path is unchanged
(its block already carries the partial story in failures/warnings, and its
golden bytes stay frozen). Zero-chunk ladder bytes are byte-identical.

Also closes the coverage gap the issue named: chunks_landed is now
asserted on the mid-batch 401/403/5xx parameterization, not only the
transport-drop path.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…t partial-emit surfaces

Minor bump: adds concurrent-writer detection (WLN-ENGINE-TREE-CHANGED-DURING-SCAN)
and hardens every credential-bearing transport against redirects (fail-closed
WeftRedirectError; see [1.3.0] Security). Fixes ship the PDR-0023 partial-emit
honesty through the human surfaces (CLI stderr + scan-job error field,
wardline-7924d67d3b), MCP boolean-arg coercion, scan-job terminal-status
monotonicity, and the zero-files vacuous-PASSED gate. Also repairs the
Keep-a-Changelog compare links (stale since v1.0.6).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Both can alter a previously-"green" run: an endpoint behind a 3xx now fails
loudly instead of silently emitting credentials cross-origin as a GET, and a
signing path with unreadable git state refuses instead of coercing to clean.
Also retitles the v1.2 section now that 1.2.0 has shipped.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…y strict)

89563f1's arg-hardening test helper is annotated, so strict mypy checks
its body — dispatch() returns dict | None (None only for id-less
notifications) and the bare return failed [return-value]. The helper
always sends id=1, so assert the invariant and return the narrowed dict.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@tachyon-beep tachyon-beep merged commit 2ccafbc into main Jul 3, 2026
9 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ba85f28390

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

status=result.status,
token_sent=result.token_sent,
url=result.url,
chunks_landed=result.chunks_landed,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Thread landed chunk counts through MCP status

This only passes chunks_landed on the result-based status path; the MCP scan path still builds a raw block that drops er.chunks_landed (src/wardline/mcp/server.py:116-134), and filigree_emit_status_from_block() then calls filigree_disabled_reason() with the default zero. In an MCP scan where the Filigree connection drops after one or more chunks landed, the response can show nonzero created/updated counts and partial failures but still report disabled_reason: "filigree unreachable ...", recreating the misdiagnosis this change is meant to remove for the agent-facing surface.

Useful? React with 👍 / 👎.

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.

1 participant