@sema-agent/core
Version:
Stateless, task-oriented AI agent core
206 lines (205 loc) • 5.63 kB
JSON
{
"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"
}