Skip to content

Release 3.2.0: federation conformance oracles, ACTOR_MISMATCH removal, Codex fixes - #82

Merged
tachyon-beep merged 23 commits into
mainfrom
feat/weft-suppression-conformance
Sep 1, 2026
Merged

Release 3.2.0: federation conformance oracles, ACTOR_MISMATCH removal, Codex fixes#82
tachyon-beep merged 23 commits into
mainfrom
feat/weft-suppression-conformance

Conversation

@tachyon-beep

@tachyon-beep tachyon-beep commented Sep 1, 2026

Copy link
Copy Markdown
Collaborator

Summary

Release PR for 3.2.0.

Review (code-review, high effort) and what changed because of it

  • Re-vendored the Loomweave capabilities golden at fixture v6 (ADR-056 authentication block) — the v5 copy failed its own drift check locally.
  • Scan-results oracle compared persisted rows against dicts process_scan_results had already normalised in place; now re-reads a pristine golden after ingest.
  • Finding-identity oracle ingested the JSONL file forms (bare-hex fingerprint, :setter qualname) instead of the HTTP wire forms (wlfp2:-stamped, suffix-stripped); switched to the wire forms so the property-setter vector actually discriminates.
  • The issues-get 200 example broke the unseeded parity replay; excluded by name in the harness (a fixture flag was tried first and withdrawn because Loomweave byte-mirrors that fixture). Added the reverse drift check against Loomweave's copy.
  • Stale digest in the capabilities oracle prose; two asserts that could never fail; sign-off oracle missing from the loomweave-contract CI list; CHANGELOG entry re-filed under Removed.
  • Deferred with issues: filigree-4a4a10f93a (portable Layer-2 drift rechecks + CI marker), filigree-60a5103dee (retire dead shim/hook + ADR-012 revision), filigree-55b0dab36a (consumer posture for authentication), filigree-6ba62e4e75, filigree-434aa4e145, filigree-9c16595d70.

Test plan

  • uv run ruff check src/ tests/ — clean
  • uv run ruff format --check src/ tests/ — clean
  • uv run mypy src/filigree/ — clean
  • federation + parity + contract suites locally — green
  • uv run pytest full suite locally on the final commit
  • GitHub CI matrix (3.11 / 3.12 / 3.13) green on the final commit

🤖 Generated with Claude Code

tachyon-beep and others added 18 commits June 25, 2026 15:07
…ter seam

Filigree's consumer side of the wardline suppression-state filter vocabulary
seam (wardline owns active/baselined/waived/judged; filigree consumes it + the
local 'all' sentinel). Three layers, mirroring test_sei_conformance_oracle.py:
- Layer-1: UPSTREAM_BLOB_SHA byte-pin of the vendored contract (default suite,
  reds on any 1-byte change)
- Consumer oracle (non-circular): asserts filigree's REAL grammar
  (db_files.VALID_SUPPRESSION_FILTERS) == the contract's states + sentinel AND
  behaviorally probes the live list_findings_global validator (accepts every
  contract value, rejects off-vocab) — ties the runtime consumer to the contract
- Layer-2: byte-drift recheck vs wardline's authority source (WARDLINE_REPO),
  skip-clean when absent, fail-closed on divergence
Wired into the loomweave-contract CI job so it gates every PR. 6 tests pass,
40 federation tests no regressions, ruff+mypy clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…re seam

Consumer side of the scan-results emission/intake seam. Vendors wardline's
authored wire golden BYTE-IDENTICAL + Layer-1 byte-pin + a NON-CIRCULAR oracle
that drives filigree's REAL intake: feeds the golden through the actual
_parse_scan_results_body validator and db.process_scan_results ingest primitive
(the exact path POST /api/weft/scan-results runs), then reads findings back via
find_finding_by_fingerprint + list_findings_global and asserts every wire axis
(fingerprint, rule_id, severity, metadata.wardline.* incl. confidence/properties/
related_entities/suppression, file records, suppression+kind filter partitions)
survives. Layer-2 byte-drift recheck vs wardline authority (WARDLINE_REPO),
skip-clean absent. Wired into the loomweave-contract CI job. 45 federation tests
pass, ruff clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…y wire seam

Consumer side of the fingerprint/qualname/spans identity seam. Vendors wardline's
authority golden BYTE-IDENTICAL + Layer-1 byte-pin + a NON-CIRCULAR oracle that
drives filigree's REAL fingerprint path: feeds each identity vector through
process_scan_results and reads back via find_finding_by_fingerprint +
list_findings_global (real metadata.wardline.qualname grammar). Proven
non-circular: forcing collision_pair_b's fingerprint == _a's collapses the real
dedup-join 5->4. Deliberately does NOT fabricate unstored columns (col_start/end
aren't persisted) — column identity proven transitively via the join key. Layer-2
drift recheck vs wardline authority, skip-clean absent. Wired into CI. 51
federation tests pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… (producer)

Filigree producer side of the filigree<->loomweave entity-associations seam
(ADR-029 opaque binding). Non-circular producer oracle: seeds associations it
owns, drives the REAL GET /api/entity-associations ASGI route
(api_list_associations_by_entity -> list_associations_by_entity), and asserts the
produced row key-set + the real LEFT-JOIN lifecycle derivations
(orphan_status/freshness_status/status_category) match the golden — never
restates the golden against itself. Layer-1 UPSTREAM_BLOB_SHA byte-pin (reds on
tamper) + a reverse byte-drift recheck. Wired into the loomweave-contract CI
job. 54 federation tests pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- capabilities CONSUMER: drives the real probe_loomweave_capabilities +
  validate_loomweave_capabilities on loomweave's /api/v1/_capabilities golden;
  RED targets proven (version-gate -> RegistryVersionMismatchError, bad
  registry_backend/sei -> RegistryUnavailableError)
- loomweave-scan-results CONSUMER: drives the real _parse_scan_results_body +
  process_scan_results, proving loomweave's fingerprint-LESS wire round-trips
  through the legacy positional dedup with metadata.loomweave.* preserved
- issue-detail PRODUCER: freezes GET /api/weft/issues/{id} golden + a
  non-circular recheck over the live ASGI handler (200 body + 404 envelope)
All byte-pinned + Layer-2 drift (fail-closed arming) + wired into CI. 73 passed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…he bar

Consumer half of the legis->filigree governed sign-off seam. POST the byte-identical
shared golden (legis-signoff-binding-request.json, blob 8796aeb...) through the REAL
ASGI entity-associations route and assert filigree persists the legis-specific
signoff_seq+signature extension verbatim, flips the binding to governed (fail-closed
vs the ungoverned twin), and makes it non-removable. Layer-1 byte-pin + skip-clean
Layer-2 recheck against legis's authority copy. Producer (legis) and consumer
(filigree) load the SAME bytes; negative-probed. No existing test altered.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…→Plainweave refs

Adds/normalizes the 'not-for-X' Banner naming this member's specific misuse (deconfliction-first, not security/compliance); fixes hardcoded Charter→Plainweave prose. Re-vendored kit; build green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Cites weft-6a1fdb0192 (C-20: federation skill/instruction injections are
overly verbose). Content-shrink only — no mechanism redesign. Nothing was
deleted: every removed chunk moved into an on-demand skill reference sheet.

Before → after (chars / bytes):

  instructions.md template     5703 / 5739  →   792 /  792   (budget 800)
  assembled injected block     5828 / 5864  →   917 /  917
  SKILL.md                    13742 / 13840 →  3685 / 3725   (budget 4000)
  skill description             455 /   455 →   455 /  455   (budget 500, unchanged)

The injected block now carries: what filigree is, the session entry point
(`session-context` → `start-next-work`), where the full reference lives
(the filigree-workflow skill, `--help`, MCP tool schemas), and the two rules
`--help` cannot teach — claim atomically (never claim+update two-step) and
stop-don't-retry on `SCHEMA_MISMATCH`.

Relocation ledger (source → new home):

  instructions.md observations discipline  → references/observations.md
  instructions.md priority scale           → references/commands.md
  instructions.md tool catalogue + --actor → references/commands.md
  instructions.md entity bindings (ADR-029)→ references/commands.md
  instructions.md error codes + recovery   → references/error-codes.md
  instructions.md ready≠startable          → SKILL.md (already there)
  SKILL.md observations section            → references/observations.md
  SKILL.md priority table, key commands,
    claim-without-transition, file records,
    health, quick decision guide           → references/commands.md
  SKILL.md response shapes + ErrorCode set → references/error-codes.md
  SKILL.md starting-work / workflow-pattern
    prose                                  → already covered by the existing
                                             team-coordination.md and
                                             workflow-patterns.md sheets

Contract guards follow the content rather than going dark:

- test_bundled_instructions_enumerate_every_error_code (filigree-adbdda2ee5)
  retargets to references/error-codes.md — one bundled sheet still carries
  the COMPLETE enum, and a new pointer test keeps SKILL.md's link to it from
  rotting. A partial teaser anywhere would re-create the original defect.
- TestInstructionsUpdate keeps every assertion, repointed at each piece's new
  home (observations / priorities / INVALID_TRANSITION recovery), and gains
  budget guards (800 / 4000 / 500), a non-vacuity sheet-exists check, and an
  index check that every references/*.md is linked from SKILL.md.
- LIVE_AGENT_DOCS and the markdown old-name guard both gain the new sheets
  (and the existing two, which were never covered by the latter).
- The bare-`observe` whole-word exemption moves from SKILL.md to
  observations.md, where the English usage actually lives; SKILL.md is now
  guarded again.

Verification: uv run pytest → exit 0 (full suite); 996 passed across
tests/install, tests/mcp/test_tools.py, the two doc-guard modules,
test_doc_command_examples, test_error_envelope_contract and
tests/cli/test_admin_commands.py. ruff check + ruff format --check clean;
mypy src/filigree/ clean (112 files).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Follow-up to the previous commit (weft-6a1fdb0192 / C-20). A line-level
sweep of origin/main's instructions.md + SKILL.md against the new surface
found four claims that the section-level relocation ledger had assumed were
already covered by the existing sheets, but were not:

- `--advance` semantics ("missing required fields become warnings rather than
  blocks; hard edges are never auto-walked") → references/workflow-patterns.md
- the "Before Starting Work" / "When Finishing Work" / "When Blocked" session
  recipes, incl. "unblocking the critical path has highest leverage"
  → references/workflow-patterns.md (new Session Recipes section)
- the store-dir location, which the old instructions.md stated as a flat
  `.filigree/` — restated correctly in references/commands.md with the real
  precedence from resolve_store_dir (weft.toml [filigree].store_dir override,
  then .weft/filigree/, then legacy .filigree/) rather than dropped or
  carried forward stale

Also verified (not a code change): install_skills / install_codex_skills copy
the whole skill tree, so all five reference sheets land in both
.claude/skills/filigree-workflow/ and .agents/skills/filigree-workflow/ —
every pointer in the shrunk SKILL.md resolves in a consuming project.

863 passed across the doc-guard, install and MCP-tool suites; ruff clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The hub registry already allocates C-18 (input-affordances-are-promises)
and C-19; the agent-context conciseness convention is C-20. Ticket
weft-6a1fdb0192 is unchanged and remains the anchor. Text-only — no
behaviour, no budget, no test target changes.

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

C-20 / weft-6a1fdb0192, owner directive. A project whose CLAUDE.md is just a
pointer at AGENTS.md ("@AGENTS.md" on its own line) should carry ONE managed
block, in AGENTS.md — not two copies of the always-loaded payload, which is
the cost C-20 budgets against. Exemplar shape: ~/elspeth/CLAUDE.md.

Detection (install_support/redirect.py, new):
- `is_agents_md_redirect(claude_md)` — a line, OUTSIDE every managed block,
  that is solely an @-import of AGENTS.md (`@AGENTS.md` / `@./AGENTS.md`,
  case-insensitive). `see @AGENTS.md for details` is prose, not a redirect.
- `strip_managed_blocks()` excludes every tool's block first, so an
  `@AGENTS.md` quoted inside a sibling's block (or our own) cannot trigger a
  migration. An unclosed block is read conservatively as running to EOF: no
  redirect is detected and the caller keeps existing dual-write behaviour
  rather than migrating on the strength of a malformed file.
- Known limitation: an `@AGENTS.md` line inside a ``` fenced code block (not
  a managed block) still reads as a redirect. Managed blocks are the case
  that occurs in practice — every weft tool writes one.

Behaviour:
- `inject_instructions(CLAUDE.md)` on a redirect project writes and maintains
  the block in AGENTS.md (creating it if absent) and migrates any legacy
  CLAUDE.md block off. No redirect -> unchanged.
- Ordering is deliberate: the AGENTS.md path is symlink-validated and written
  BEFORE the legacy block is stripped from CLAUDE.md, so a part-way failure
  leaves the instructions in both files, never in neither.
- The redirect path calls the *locked* internals under the single existing
  lock acquisition — the lock is per store dir, so re-entering
  `inject_instructions` would self-deadlock on filigree's own flock.
- SessionStart freshness (hooks.py) honours the redirect. Critically it
  migrates a legacy CLAUDE.md block even when that block's hash is CURRENT:
  the staleness short-circuit would otherwise skip that project forever.
- `filigree install` (all flags) runs one step, not two, in a redirect
  project — the CLAUDE.md step already maintains AGENTS.md. `--agents-md`
  and `--claude-md` each remain correct standalone.
- doctor: a pointer-only CLAUDE.md now PASSES ("Redirects to AGENTS.md;
  instructions live there") instead of failing "No filigree instructions"
  forever; a redirect CLAUDE.md still carrying a legacy block FAILS with a
  fix hint; and a missing AGENTS.md under a redirect is a real failure
  rather than the usual "AGENTS.md is optional".

C-4 (multi-owner block contract) holds on both files: the removal path shares
the replace path's foreign-safe bounding via the extracted `_own_block_bounds`,
so only filigree's own block is ever excised, and a file that is nothing but
our block is left alone rather than emptied.

Tests: 32 new across tests/install/test_install.py (detection matrix incl.
accepted/rejected spellings, block-quoted imports, unclosed blocks;
block-lands-only-in-AGENTS.md; legacy migration; foreign-block preservation;
idempotency; symlink refusal leaves CLAUDE.md intact; no-redirect unchanged;
AGENTS.md created), tests/install/test_hooks.py (freshness migrates
current-hash and stale legacy blocks, pointer-only left alone, AGENTS.md
still refreshes, non-redirect dual-write intact) and
tests/cli/test_admin_commands.py (one reported action under `install`,
`--agents-md` / `--claude-md` standalone). Also verified by hand against a
copy of the real ~/elspeth/CLAUDE.md: redirect detected, AGENTS.md created
with the block, CLAUDE.md byte-identical to the original.

571 passed across tests/install + tests/cli/test_admin_commands.py; ruff and
mypy clean.

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

C-20 / weft-6a1fdb0192. Legis's redirect installer (legis c18/concise-injections,
4255cf4) is the normative reference the members implement against, so filigree
must not diverge on the same file. Two real divergences, plus the user-facing
promises that changed with the feature.

Conformed:

- **Removal is now more conservative than injection.** Injection can always
  fall back to an append — it deletes nothing — so it may bound a malformed
  block at a foreign fence and recover. A mis-bounded *delete* eats a sibling
  tool's block and has no safe fallback. The migration path now uses
  `_provable_own_block_span`, which refuses (no-op + warning, block left in
  place, reported in the return message) whenever ownership is not provable:
  our close marker missing; any open fence nested inside an unclosed block
  (which is what shields an own marker inside an unclosed sibling block); or
  split brain (>1 own block — doctor's "resolve it by hand" posture rather
  than guessing which copy to drop). Injection keeps its recovery semantics
  unchanged.
- **The SessionStart hook never installs.** It now migrates a legacy CLAUDE.md
  block only once AGENTS.md already carries one. Migrating while AGENTS.md is
  empty would leave the session with NO filigree guidance; a duplicate block
  is the far cheaper failure, and `filigree install` does the real migration.
- **Doubtful input keeps dual-write:** a symlinked CLAUDE.md now reads as no
  redirect, alongside absent/unreadable/non-UTF-8.

Already matching, now pinned by test: the accepted/rejected @-import
spellings (incl. `@/AGENTS.md` rejected as an absolute path), managed-block
masking, `--claude-md` writing AGENTS.md under a redirect, doctor's inverted
check, and the fenced-markdown detection gap — accepted as spec, uniform
across members rather than locally clever.

Promises updated with the behaviour (C-18 input-affordances doctrine — a flag
must not advertise what it no longer does):
- `--claude-md` help now says "into AGENTS.md when CLAUDE.md only redirects
  there".
- docs/cli.md gains a redirect note covering install, the SessionStart
  refresh and doctor.
- CHANGELOG.md gains an Unreleased section for both the shrink and the
  redirect routing.

+11 tests (conservative-removal matrix: missing close marker, split brain,
shielded-by-unclosed-sibling, file-is-nothing-but-our-block, CRLF, symlinked
CLAUDE.md; hook never-installs in both AGENTS.md-absent and
AGENTS.md-without-block shapes; doctor --fix convergence). Re-verified against
a copy of the real ~/elspeth/CLAUDE.md with a legacy block planted: migrated,
CLAUDE.md restored byte-identical to the original, AGENTS.md created and
current, second run idempotent.

580 passed across tests/install + tests/cli/test_admin_commands.py; ruff and
mypy clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Av5hzKQjJrM2SAeTqTMMBa
Copilot AI lite review requested due to automatic review settings September 1, 2026 18:55
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

Copilot AI 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.

Pull request overview

This PR strengthens Filigree’s federation contract guarantees by adding byte-pinned conformance oracles and vendored fixtures, while also revising “actor identity” semantics so explicit agent aliases are treated as the operational actor (with OS identity kept as provenance, not a mismatch). It also introduces redirect-aware instruction injection for CLAUDE.md→AGENTS.md setups and restructures the bundled skill/instructions content to meet C-20 budgets by relocating detail into reference sheets.

Changes:

  • Add multiple federation conformance “oracles” (byte-pins + live ASGI/intake checks) and new contract fixtures under tests/fixtures/contracts/.
  • Retire ACTOR_MISMATCH warning injection and treat actor as a logical alias while recording verified_* as transport provenance.
  • Add redirect-aware instruction injection (CLAUDE.md pointer projects write to AGENTS.md only) and relocate guidance into skill reference sheets with size-budget tests.

Reviewed changes

Copilot reviewed 59 out of 61 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
uv.lock Bumps editable package version to 3.1.0 in lock metadata.
tests/util/test_docs_contracts.py Updates doc contract allowlist/exemptions for relocated skill reference sheets.
tests/test_error_envelope_contract.py Moves ErrorCode enumeration checks to the new reference sheet and adds pointer test.
tests/mcp/test_verified_actor_mcp.py Updates MCP tests to assert no ACTOR_MISMATCH and to verify actor vs verified_actor persistence.
tests/mcp/test_tools.py Adds skill-pack content/budget and relocation integrity tests.
tests/mcp/test_no_old_names_in_markdown_docs.py Expands markdown guard coverage to new reference sheets.
tests/install/test_install.py Adds extensive redirect-aware injection/migration test coverage.
tests/install/test_hooks.py Adds redirect-aware SessionStart freshness/migration tests.
tests/fixtures/contracts/weft/issues-get.json Extends weft issue-detail contract fixture with a live 200 example.
tests/fixtures/contracts/wardline-scan-results-wire.golden.json Adds vendored Wardline scan-results request golden.
tests/fixtures/contracts/wardline-finding-identity-wire.golden.json Adds vendored Wardline finding-identity golden vectors.
tests/fixtures/contracts/loomweave-scan-results-wire.golden.json Adds vendored Loomweave scan-results golden.
tests/fixtures/contracts/legis-signoff-binding-request.json Adds vendored legis governed sign-off binding request golden.
tests/fixtures/contracts/get-api-v1-capabilities.json Adds vendored capabilities contract fixture.
tests/federation/test_weft_issue_detail_wire_conformance_oracle.py Producer-side oracle tying live handler output shape to golden.
tests/federation/test_suppression_filter_conformance_oracle.py Consumer-side oracle binding Filigree suppression vocab/validator to Wardline contract.
tests/federation/test_signoff_binding_wire_conformance_oracle.py Consumer-side oracle verifying governed sign-off fields are parsed/persisted and have semantic effect.
tests/federation/test_scan_results_wire_conformance_oracle.py Consumer-side oracle driving real validator + ingest and round-tripping Wardline golden.
tests/federation/test_entity_associations_wire_conformance_oracle.py Producer-side oracle tying live reverse-lookup response row shape to golden + optional consumer drift recheck.
tests/core/test_actor_identity.py Updates actor identity tests to reflect “no mismatch warning” policy.
tests/cli/test_verified_actor_cli.py Updates CLI tests to assert no mismatch warning and verify stored actor/provenance columns.
tests/cli/test_issue_commands.py Adjusts JSON parsing guidance in tests (prefer stdout due to Click merge behavior).
tests/cli/test_files_commands.py Same stdout-isolation adjustments for JSON contract tests.
tests/cli/test_compose_commands.py Same stdout-isolation adjustments for JSON contract tests.
tests/cli/test_admin_commands.py Adds redirect-aware install reporting test and server-mode init registration repair tests.
src/filigree/skills/filigree-workflow/SKILL.md Compresses SKILL.md and turns it into an index pointing to reference sheets.
src/filigree/skills/filigree-workflow/references/workflow-patterns.md Adds “session recipes” content moved out of SKILL.md/instructions.
src/filigree/skills/filigree-workflow/references/observations.md New relocated observations guidance sheet.
src/filigree/skills/filigree-workflow/references/error-codes.md New relocated response envelope + full ErrorCode enum sheet.
src/filigree/skills/filigree-workflow/references/commands.md New relocated commands/priorities/records sheet.
src/filigree/mcp_tools/common.py Generalizes warning injection docstring (no longer actor-mismatch specific).
src/filigree/mcp_server.py Removes ADR-012 mismatch-warning injection from MCP responses.
src/filigree/install.py Implements redirect-aware instruction injection + safe block stripping utilities.
src/filigree/install_support/redirect.py Adds redirect detection + managed-block stripping for safe redirect identification.
src/filigree/install_support/doctor.py Makes doctor redirect-aware (CLAUDE.md pointer is OK without a block; missing AGENTS.md becomes an error).
src/filigree/hooks.py Updates SessionStart freshness logic to honor redirects and migrate legacy CLAUDE.md blocks safely.
src/filigree/data/instructions.md Shrinks injected instructions to the minimal entry point + two non-discoverable rules.
src/filigree/cli.py Removes CLI actor-mismatch warning emission.
src/filigree/cli_commands/admin.py Ensures server-mode init re-registers canonical store path; makes install redirect-aware to avoid duplicate writes/reporting.
src/filigree/actor_identity.py Reframes actor identity: alias is operational; verified is provenance; mismatch warning retired (shim retained).
site/src/pages/index.astro Expands “not a security boundary” disclaimer and updates a CSS var reference.
docs/UPGRADING.md Updates upgrade docs for config-anchor move and server registration repair.
docs/superpowers/specs/2026-06-05-transport-bound-actor-identity-design.md Updates design spec to remove mismatch-warning policy.
docs/product/vision.md Adds product vision doc under docs/product.
docs/product/roadmap.md Adds product roadmap doc under docs/product.
docs/product/prd-0001-agent-broadcast-board.md Adds PRD for broadcast board bet.
docs/product/metrics.md Adds metrics doc with bootstrap placeholders.
docs/product/decisions/0004-tabard-identity-seam.md Adds decision record for Tabard identity seam posture.
docs/product/decisions/0003-agent-broadcast-board.md Adds decision record for broadcast board bet.
docs/product/decisions/0002-agent-dx-is-the-now-bet.md Adds decision record for Now bet prioritization.
docs/product/decisions/0001-bootstrap-from-observed-state.md Adds bootstrap decision record for product workspace.
docs/product/current-state.md Adds a “current state” checkpoint doc.
docs/product/2026-06-16-filigree-to-hub-tabard-seam.md Adds hub/Tabard seam memo.
docs/cli.md Documents CLAUDE.md→AGENTS.md redirect behavior for install/doctor/freshness.
docs/architecture/decisions/ADR-012-actor-identity-threat-model.md Updates ADR-012 conflict policy to “record without warning”.
CHANGELOG.md Adds Unreleased entries for redirect-aware injection, actor alias policy, budgeted guidance relocation, and init fix.
.gitignore Stops ignoring docs/product and ignores .wardline/ output directories instead.
.github/workflows/ci.yml Adds new federation oracle tests to the CI job’s explicit test list.
Suppressed comments (1)

tests/mcp/test_tools.py:2899

  • Test name says c18 but the docstring and comments refer to a C-20 budget for SKILL.md. Renaming avoids confusion when hunting for the C-20 budget guardrail tests.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +59 to +61
elif is_close and ns == open_ns:
open_ns = None
last = m.end()
Comment thread src/filigree/install.py
Comment on lines 308 to 310
The read-modify-write is serialised across processes by an exclusive
``.filigree/instructions.lock`` (filigree-04bad2a2bf).
"""
Comment thread tests/mcp/test_tools.py
assert "filigree-workflow" in FILIGREE_INSTRUCTIONS
assert "--help" in FILIGREE_INSTRUCTIONS

def test_instructions_stay_within_c18_budget(self) -> None:
tachyon-beep and others added 5 commits September 2, 2026 05:05
… v6 (ADR-056 auth discovery)

Loomweave ef8dd82 bumped the producer golden to fixture_version 6, adding the
additive non-secret `authentication` discovery block. Re-vendor byte-identical
and refresh the blob/sha256 pins; the consumer oracle is unchanged and passes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Av5hzKQjJrM2SAeTqTMMBa
…re replay

The weft issue-detail oracle added a populated-success example
(live_v_issue_detail_200) to issues-get.json, but the generation-parity
harness replays every example against an unseeded dashboard, where that id
cannot exist (404 != 200 on every CI lane). Flag the example
requires_seeded_state and have the harness skip such examples; the oracle
seeds its own row and pins the key shape, so coverage is unchanged. Refresh
the oracle's blob pin for the fixture edit.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Minor: redirect-aware instruction injection (C-20) is new surface; agent-alias
attribution, C-20 context budgets, init store reconciliation, symlink-safe
store migration and instruction lock, unified MCP project-scope resolution,
seven federation conformance oracles, dependency bumps.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…review fixes)

- scan-results oracle: process_scan_results normalises finding dicts in
  place and parsed["findings"] aliased the golden, so every post-ingest
  comparison ran against already-mangled objects; re-read a pristine golden
  after ingest.
- finding-identity oracle: ingest the HTTP wire forms (scheme-stamped
  `wlfp2:` fingerprint, suffix-stripped qualname) instead of the JSONL file
  forms Filigree never receives; the property-setter vector now actually
  discriminates.
- issues-get contract fixture: drop the harness control flag (Loomweave
  byte-mirrors this fixture; the copies had desynced) and exclude the
  seeded-only example by name in the parity harness instead; restore the
  blob pin and add the reverse skip-clean drift recheck against Loomweave's
  vendored copy.
- capabilities oracle: prose digest updated to the v6 golden; two asserts
  that could never fail replaced by a comment naming the load-bearing check.
- ci: the loomweave-contract job list was missing the sign-off oracle.
- CHANGELOG: ACTOR_MISMATCH is a removal, not a narrowing; file it under
  Removed and say so. uv.lock carries the 3.2.0 self-version.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@tachyon-beep tachyon-beep changed the title Federation conformance oracles + agent-alias actor attribution Release 3.2.0: federation conformance oracles, ACTOR_MISMATCH removal, Codex fixes Sep 1, 2026
@tachyon-beep
tachyon-beep merged commit 80050fb into main Sep 1, 2026
8 checks passed
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