@sema-agent/core
Version:
Stateless, task-oriented AI agent core
82 lines (81 loc) • 3.34 kB
JSON
{
"repo": "core",
"version": "7.17.6",
"from": "3dfd4ff66bfd1c6ea217fa251d2f28df79052f87",
"to": "adb5afdddf8b01be7b9b8a8394251eea7fe2ee19",
"added": [],
"removed": [],
"changed": [],
"narrowed": [
{
"id": "F1",
"source": "behaviorFlips.summary",
"text": "Narrowing — the execute-time canonical recheck now answers for a GLOB's expansion (#775; B-109; test [7201]): the full Bash face hands the boundary's `undecidedPaths` (the operands the shell will expand) to the same expander the `bash_readonly` face already used, so a pattern that expands to a target outside the roots is refused before spawn; an expansion that cannot be established (uncompilable segment, >256 directories, >8192 names, an unreadable directory) is refused too."
},
{
"id": "F2",
"source": "behaviorFlips.summary",
"text": "Narrowing — a `..` taken AFTER a symlink is judged where the kernel takes it (#770; B-110; test [7203]): the lexical walk folds `..` for its containment verdict as before, but the recheck now receives the operand's UNFOLDED spelling and resolves it segment by segment (realpath the prefix, THEN take the parent), so `<link>/../x` is refused when the link's target parent is outside every read root."
},
{
"id": "F3",
"source": "behaviorFlips.summary",
"text": "Narrowing — `sed`'s SCRIPT SLOT is judged as an argument-as-program (#769; test [7180] candidate 7): a sed script that names a file or runs a command (`r`/`R`/`w`/`W`/`e` commands, `s///w FILE`, `s///e`) or a script the walk cannot see (`-f FILE`/`--file=`) refuses the command whole (mandated), under the same rule as shell re-entry and argv re-entry."
},
{
"id": "F5",
"source": "behaviorFlips.summary",
"text": "Narrowing — the execute-time read boundary asks what an environment DECLARES, not what interface it implements (#782; B-115; test [7214]): the canonical recheck is skipped only when the environment declares `capabilities.isolation: true` (the sandbox is the boundary, C-R37 γ); a lane that implements the remote interface but declares no isolation (server `REMOTE_EXEC=host`, SSH hosts) now runs the recheck like an in-process env."
}
],
"closedSetMembers": [],
"typeKeys": [
{
"type": "CompoundReadonlyVerdict",
"at": [
"src/tools/fs/bash-readonly-classifier.ts:644"
],
"added": [
"checkedSpellings",
"outOfRootSpellings",
"undecidedSpellings"
],
"removed": [],
"breaking": false,
"criteriaCovered": false
}
],
"declarationMoves": [],
"mintMoves": [],
"criteriaObserves": [
{
"kind": "typeMember",
"name": "AskRequest.ruleOffersAbsence",
"assertions": [
"G1.a",
"G2.a",
"G3.a",
"G5.a"
]
},
{
"kind": "typeMember",
"name": "HarvestReport.rejections",
"assertions": [
"G4.a"
]
}
],
"consumersHint": {
"cli": [
"CompoundReadonlyVerdict"
],
"server": [
"CompoundReadonlyVerdict"
],
"sdk": [],
"note": "scanned cli@60ea7972 server@940568c6 sdk@6910789 — a name listed is MENTIONED there today, which is evidence of consumption, not proof of it"
},
"breakingCount": 0,
"breakingItems": []
}