UNPKG

@sema-agent/core

Version:

Stateless, task-oriented AI agent core

206 lines (205 loc) • 5.63 kB
{ "repo": "core", "version": "7.23.1", "from": "0f45a3d257bcdb5f38faaa7c75a6fa1298685402", "to": "v7.23.1", "added": [], "removed": [], "changed": [], "narrowed": [ { "id": "F2", "source": "behaviorFlips.summary", "text": "FEWER CARDS, both seats (#892): a verb's FIRST OPERAND can be a slot its grammar fills rather than a file. `VerbOptionSlots.firstOperand` (`src/tools/fs/bash-readonly-classifier.ts:1562`) is a declaration ROW — grep's `pattern` (`:1621`), sed's `script` (`:1675`) — read with the same `OptionValueKind` vocabulary the option slots already use, and ONE reader (`suppliesFirstOperandSlot` `:1401`) answers \"did an option supply this slot instead\" for both walks that needed it (the boundary walk `:3441`/`:3459-3466`, the stdin-floor walk `:4007`/`:4012`). Rules: -1 (the verb-named branch and its private predicate are gone; a verb with no row keeps an ordinary first operand). WHO NEEDS IT: `sed -n '/error/p' app.log` — an everyday log-reading line whose script, spelled with slashes because it opens with an address regexp, was read as the absolute path `/error/p`, found outside the roots and mandated; the `-e` spelling of the same script was already exempt, so one invocation had two readings. WHO IS HURT: a probe pinned at `mandated` for a path-shaped sed script, including its deny-listed spelling — `sed <deny row>` and `sed -l <deny row>` now drop their card on the default/off and bypass tiers. COMPENSATION: the token is not a file under EITHER implementation (it is the script where `-l` takes no value and `-l`'s length argument where it does), so the verb-blind reading that recorded it as a read was an over-approximation, not a protection; the narrowing is exactly one operand wide and no other verb grew a row." }, { "id": "G2", "source": "criteria.title", "text": "#892 — a verb's first operand can be a slot its grammar fills, and the narrowing is exactly one operand wide" } ], "closedSetMembers": [ { "set": "QuoteOpen", "at": [ "src/tools/fs/bash-lexer.ts:109" ], "newSet": true, "added": [ "\"", "'" ], "removed": [], "breaking": false, "criteriaCovered": false }, { "set": "SHELL_SCAN_DECLINES", "at": [ "src/tools/fs/bash-program-position.ts:346" ], "newSet": true, "added": [ "stream_fed_operands", "unreadable_program_position" ], "removed": [], "breaking": false, "criteriaCovered": false } ], "closedSetsUnreadable": [], "typeKeys": [], "declarationMoves": [ { "name": "NOT_AUTO_ALLOWED", "kind": null, "onSurface": false, "from": [ "src/tools/fs/bash-program-position.ts", "src/tools/fs/bash-readonly-classifier.ts" ], "to": [ "src/tools/fs/bash-program-position.ts" ] }, { "name": "traceHookCrash", "kind": null, "onSurface": false, "from": [ "src/core/runner/gate-exit.ts" ], "to": [ "src/core/gate-crash-trace.ts" ] } ], "mintMoves": [], "criteriaObserves": [ { "kind": "typeMember", "name": "AskRequest.message", "assertions": [ "G5.a", "G5.b" ] }, { "kind": "typeMember", "name": "AskRequest.origin", "assertions": [ "G5.a", "G5.b", "G5.c" ] }, { "kind": "typeMember", "name": "AskRequest.ruleOffersAbsence", "assertions": [ "G1.d", "G3.b", "G3.d", "G4.c" ] }, { "kind": "typeMember", "name": "AskRequest.toolName", "assertions": [ "G5.a" ] }, { "kind": "typeMember", "name": "BashReadonlyRootBoundary.denyMatch", "assertions": [ "G1.c" ] }, { "kind": "typeMember", "name": "CompoundReadonlyVerdict.outOfRootPaths", "assertions": [ "G1.b", "G2.a", "G2.b", "G2.c", "G2.d" ] }, { "kind": "typeMember", "name": "CompoundReadonlyVerdict.readDenied", "assertions": [ "G1.b", "G2.b" ] }, { "kind": "typeMember", "name": "ReadRootGrantCandidate.dir", "assertions": [ "G4.e" ] }, { "kind": "typeMember", "name": "ReversibilityVerdict.mandated", "assertions": [ "G1.a", "G1.b", "G1.c", "G2.a", "G2.b", "G2.c", "G2.d", "G3.a", "G3.c", "G3.d", "G3.e", "G4.a", "G4.b", "G4.c", "G4.d", "G6.a", "G6.c", "G7.a", "G7.b", "G7.c" ] }, { "kind": "typeMember", "name": "ReversibilityVerdict.readRootCandidate", "assertions": [ "G4.e" ] }, { "kind": "typeMember", "name": "ReversibilityVerdict.reversible", "assertions": [ "G1.a", "G3.a", "G3.e", "G4.b", "G4.d", "G6.a", "G6.b", "G7.a", "G7.c" ] } ], "consumersHint": { "cli": [], "server": [], "sdk": [], "note": "scanned cli@879f19e9 server@1b232ad6 sdk@6209e5e — a name listed is MENTIONED there today, which is evidence of consumption, not proof of it" }, "breakingCount": 0, "breakingItems": [], "toResolvedAt": "29f9c021a132099c91933bd71a58bd4da716bfac" }