Repository navigation
agent-stack 0.27.0 — trust by machine, Fabric jobs, room in every description - #44
Merged
Merged
Conversation
…ription Integration wave 4 (sshlg-skills plan R23-R26): gateway.md opens delegation with the operator's trust tiers (T0/T1 no token, T2 full on-behalf-of model; money limits, human gates and no borrowed keys on every tier), pinned to Fabric main 5bf15e5c (ADR-0144 amendment 4, 19ad05ca) and fabric-workspace 714808ac; mcp.md names fabric-interop/0.1 jobs as the worked fallback for MCP Tasks (fabric-agent-contract bcada4a); agent-interop points to the Fabric adapter skills and observatory-log:handling-secrets; descriptions 935/936/938/911. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…d per the contract, R25/R26 gated Three blind readings failed the first cut (4f88a0e). This round: - gateway.md: DL-26 replaces "optional, attribution only" and "a service taking calls across the boundary requires it" (per caller, not per service; a presented token verified, refused when invalid, used for attribution and narrowing); tier by origin (DL-25), T1 = RM-21 still open; five human gates and three money levels; token-less T0 metering (Observatory when-token, keyserver off, METER.md M0); DL-8 and DL-12 scoped; pin 8e49fbd -> 3cb03ab (DL-25/DL-26); stale "read-only" meter scope and "device check" corrected at the new pin; two new traps. - mcp.md: output and scope in the envelope, inputResponses (C3.3), the job handle for a caller without Tasks, the well-known degraded list (service.md at bcada4a); per-reply envelope deferred as B-156. - test/validate.py: description ratchet 940 (house 970 kept); check_interop_points_to_the_estate_skills (R25). CI negative self-tests for both; watched failing locally (941 fails, 940 passes; a removed building-fabric-services pointer fails). - test/audit_regressions/w4-fabric-doctrine.py: 5 cases, all fail on the first cut's gateway.md/mcp.md. - agent-evals names observability again (929); agent-interop adds "delegation token", "on behalf of", «делегирование» (937); all 46 hub triggers still substrings. - README, CHANGELOG and ledger rewritten for this round. R28 not included. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ding by 53 The fixed 53-character pad reached 970 only while agent-evals sat above 917; at 911 (0.27.0's first cut) it planted nothing, the validator rightly passed, and validate run 38204211436 reported the guard broken. The plant now replaces the description with exactly 971 characters and requires the working-limit message, so it fails for the right reason or says so. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ken is the host's, R28 named Second blind reading: unit pass, seam pass, product pass with risks. Closes the cheap risks without another round: approval/1 paragraph scoped to T2 (DL-26); T0 placement no longer lists the descriptor token (DL-12); the undecided T1 scoping proposal is named; mcp.md names degraded, human_steps and sources as the estate's per-reply convention (B-156 stays open); agent-interop triggers on "токен делегирования" (939 chars, ratchet 940); AG-06a/b cite plan R28; B-157 for the one-way adapter back-links. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…losed in make-skill 0.31.0) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Integration wave 4 of the family's waves run (sshlg-skills
docs/evidence/plans/2026-10-11-integration-waves.md, R23–R26).Fix round (
390a169,86b7656). The first cut (4f88a0e) failed three blind readings (unit, seam, product). This revision rewrites the tier block against its sources and gates R25 and R26.gateway.mdtrust tiers per fabric-agent-contract DL-25/DL-26 at3cb03ab:• a callee MUST NOT require a token, approval or grant record from a T0/T1 caller, even when it also serves T2
• a token such a caller presents is verified, refused when invalid, and used for attribution and narrowing
• the tier comes from the caller's origin, not its connection
• T1 is RM-21, still open
• five human gates and three money levels
• token-less T0 metering (Observatory
slotsRequireGrant: when-token, keyserveroff)• DL-8 (fail closed) and DL-12 (descriptor token) scoped to T2 and the machine boundary
• pin
8e49fbd→3cb03ab19ad05ca(amendment 4), fabric-workspace714808acauthority.md, project-observatory-dashboardMETER.mdat5b24038, fabric-agent-adapter 0.20.0building-fabric-services/references/delegation.md:47-55.test/audit_regressions/w4-fabric-doctrine.pypasses 5/5 and fails 5/5 against the first cutmcp.md:• the envelope names
outputandscope•
inputResponses(§C3.3)• a caller without Tasks keeps receiving the job handle (replaces "works unchanged")
• the well-known
degradedlist fromservice.md:93-101atbcada4a• the per-reply
degraded/human_stepsenvelope is named as an estate convention and deferred to backlog row B-156w4-fabric-doctrine.pycase 5agent-interopnamesfabric-agent-adapter:{creating-fabric-agents, adapting-projects-to-fabric, building-fabric-services}andobservatory-log:handling-secrets, fully qualifiedcheck_interop_points_to_the_estate_skillsintest/validate.py. A CI negative self-test removes one pointer on a copy, and the check was watched failingtest/validate.py; the house limit stays 970audit_skill.py --house: 0 GAP / 19 PASS for each skillDescription risks:
agent-evalsnames "observability" again.agent-interopadds "delegation token", "on behalf of" and «делегирование».ROUTES['agent-stack']triggers from sshlg-skillsorigin/main:lib/triggers.jsare still substrings of their skill's description.CI: the first cut's validate run 38204211436 failed on the plant "a description must stay inside the working limit". It prepended a fixed 53 characters, which no longer reached 970 at 911 characters. The plant now sets an exact 971 and requires the working-limit message (
86b7656).Not in this PR: R28 (the AG-06a/b residue rows from the plan's packet W4-A) is not implemented here. It stays on the board.
Gate:
npm testEXIT=0 (16 checks = 12 named + 4 per-skill).🤖 Generated with Claude Code