4059 Commits
Author SHA1 Message Date
haelyra dbfd6ab009 fix: protect commands-only CommonJS runtime in Claude installs
Reuse the existing scripts boundary asset and guard for commands-core without hooks. Preflight selected helper scopes and preserve user module metadata, unowned/edited JS interpretation, and boundary ownership through uninstall. Actual installed ESM help/JSON, receipt, reinstall/uninstall and 34 focused cases pass. OpenCode boundary 8/8, adapters 51/51, manifests 43/43; focused coverage exceeds 80%. Two root-owned legacy ESM core-profile fixtures require correction; no unsupported states weakened.
2026-10-11 03:04:04 -04:00
haelyra bd966c9bfa test: reproduce commands-only ESM runtime and scope conflicts
Actual installed skills-health --help fails with require undefined in ESM Claude project and home fixtures. RED evidence: command-runtime-evidence/red-final.log; bounded repair remains pending.
2026-10-11 02:57:28 -04:00
Yann Robertoandhaelyra 298ac25330 chore: merge main into context citation fix
Preserve citation scopes alongside current admission evidence floors, anchor terms, routing entries, and coded denials. Bump the routing policy to invalidate receipts created before the combined protections.

Conflict resolution follows the focused integration prepared in c9a3143aa4.

Co-authored-by: haelyra <49814733+haelyra@users.noreply.github.com>
2026-10-11 14:47:06 +08:00
haelyra 353f64fa83 Merge remote-tracking branch 'refs/remotes/pr/3499' into integration/ecc-043-20261011
# Conflicts:
#	src/llm/providers/ollama.py
#	src/llm/providers/openai.py
2026-10-11 02:45:34 -04:00
haelyra 65399a0c87 Merge branch 'steward/docs-providers-20261011' of /Users/hira/Documents/ECC/ecc-review-docs-providers-20261011 into integration/ecc-043-20261011
# Conflicts:
#	manifests/context-packs/skill-triggers@1.json
2026-10-11 02:32:31 -04:00
Yann Roberto effa074f7d fix(llm): normalize model environment values 2026-10-11 14:31:45 +08:00
haelyra f4f8beba01 fix: require explicit reasoning format before stripping content 2026-10-11 02:26:58 -04:00
haelyra 09d4283cf5 Merge branch 'steward/install-20261011' of /Users/hira/Documents/ECC/ecc-review-install-20261011 into integration/ecc-043-20261011
# Conflicts:
#	manifests/context-packs/skill-triggers@1.json
2026-10-11 02:24:10 -04:00
haelyra 5fe62f3d98 Merge branch 'steward/security-20261011' of /Users/hira/Documents/ECC/ecc-review-security-20261011 into integration/ecc-043-20261011
# Conflicts:
#	manifests/context-packs/skill-triggers@1.json
2026-10-11 02:23:56 -04:00
haelyra c79a7d0321 fix(install): give shared command helpers one module owner 2026-10-11 02:22:53 -04:00
haelyra d2f721a030 fix: reject recursive callback relays and verify profile display isolation 2026-10-11 02:22:24 -04:00
haelyra 1bbebf61d9 fix(story-lifecycle): reject unsafe numeric allocation IDs
A real CLI fixture reproduced an infinite allocation loop from an existing unsafe numeric ID. Reject unsafe IDs and overflow without writing markers; 26 workflow fixtures, changed-code coverage and validators pass.
2026-10-11 02:17:50 -04:00
haelyra ad92fee888 fix: refresh routing source digest after relay guidance 2026-10-11 02:17:04 -04:00
haelyra 401faee091 fix: bound observer counters and apply first-tick thresholds 2026-10-11 02:16:56 -04:00
haelyra f58f15af30 Merge branch 'steward/install-20261011' of /Users/hira/Documents/ECC/ecc-review-install-20261011 into integration/ecc-043-20261011 2026-10-11 02:14:56 -04:00
haelyra d6aab8393f Merge branch 'steward/docs-providers-20261011' of /Users/hira/Documents/ECC/ecc-review-docs-providers-20261011 into integration/ecc-043-20261011
# Conflicts:
#	manifests/context-packs/skill-triggers@1.json
2026-10-11 02:14:56 -04:00
haelyra dadfdd6691 Merge branch 'steward/security-20261011' of /Users/hira/Documents/ECC/ecc-review-security-20261011 into integration/ecc-043-20261011 2026-10-11 02:14:22 -04:00
haelyra 3add1816ea feat: offer an opt-in local Claude usage display
Scoped adaptation of PR #2716: keep compact rendering as the default and require ECC_STATUSLINE_USAGE=1. Installer registration, managed aliases and the Codex background bar remain outside this slice.
2026-10-11 02:09:06 -04:00
haelyra 52d546f0d1 docs: align Turkish instructions with the prepared skill catalog 2026-10-11 02:09:04 -04:00
haelyra e611cf66d0 fix(state): serialize work-item claims and preserve existing ownership 2026-10-11 02:08:19 -04:00
haelyra 9d7e5a5bc9 chore: refresh canonical skill digest after observer fixes 2026-10-11 02:07:05 -04:00
haelyraand646826 7b4e7828ce fix: redact escaped quoted credentials in observation records
Carry forward the bounded serialized-quote defect identified by PR 2786. Metadata-only observation consent remains separate; exclude the broader provider lifecycle head.

Co-authored-by: 646826 <646826@gmail.com>
2026-10-11 02:05:50 -04:00
Yann Roberto e4b9451c68 fix(llm): honor selected models in provider resolution 2026-10-11 14:05:46 +08:00
haelyra 7f226d069c fix: prevent stranded observation counter locks after process death 2026-10-11 02:05:20 -04:00
haelyra 6233b648f9 fix(hooks): resolve bootstrap from selected Claude config root 2026-10-11 02:03:45 -04:00
haelyraandGeronimo da87114e05 fix: honor global preview in every guided install entry
Scoped adaptation from PR #3088. Keep the canonical atomic writer and dispatcher; exclude the broader provider/tool changes.

Co-authored-by: Geronimo <varungore1@gmail.com>
2026-10-11 02:03:09 -04:00
haelyra 807c98aff6 fix: preserve cheap native context routing from PR 2740 2026-10-11 02:02:55 -04:00
haelyra 412347a2ab feat(skills): integrate optional test governance workflows from PR 3413
Preserve complete contributor head. Keep current-session invocation, project-defined verification gates and existing task authorization; no new commands or completion authority. Disposable Claude/Codex install and removal verified.
2026-10-11 02:02:49 -04:00
haelyra 36f01734e7 feat(skills): integrate optional change impact workflow from PR 3412 2026-10-11 02:01:43 -04:00
haelyra 3ab8a4f618 feat(skills): integrate optional domain context workflow from PR 3411
Preserve full contributor head; refresh catalogs and Pi projection. Verify disposable Claude/Codex installs and resource discovery, with no automatic hooks or governance files.
2026-10-11 02:01:07 -04:00
haelyra 80964ec4fe fix(install): ship standalone skill-health command runtime 2026-10-11 02:00:27 -04:00
haelyra 43febb9ada fix: preserve opt-in GateGuard contract questions from PR 3497 2026-10-11 02:00:27 -04:00
haelyra 54925308d7 feat(skills): integrate collision-safe story lifecycle from PR 2311
Preserve full contributor history and current catalog. Actual process workflows cover concurrency, recovery, sprint planning and read-only status. Bound registry symlinks, counts and lock waits; preserve manually curated trigger provenance.
2026-10-11 01:59:36 -04:00
haelyra 5ad9cb931b fix: harden container OAuth callback relay lifecycle 2026-10-11 01:58:37 -04:00
haelyra bd96347002 fix: preserve target-scoped GateGuard search credit from PR 3496 2026-10-11 01:57:34 -04:00
haelyra 544601912a fix(llm): integrate capability-aware Ollama tools from PR 3275
Preserve contributor head and current main reasoning/errors. Reject malformed capability declarations and retry discovery; actual localhost HTTP ReAct round-trip verified.
2026-10-11 01:57:34 -04:00
haelyra 242abdecb4 fix(llm): integrate revised reasoning filtering from PR 3272 2026-10-11 01:56:43 -04:00
haelyra 837cbb0773 fix(catalog): reject unmarked agent-tree skill undercounts 2026-10-11 01:56:28 -04:00
haelyra c9a3143aa4 fix: preserve citation intent and current routing evidence gates 2026-10-11 01:56:19 -04:00
haelyra 4f5970bf4f fix(codex): ship named CLI profile files with ownership protection
Reproduced issue #3485 on installed Codex CLI 0.162.0. Keep user legacy choices for explicit migration and verify disposable install, repair, reinstall and removal.
2026-10-11 01:55:54 -04:00
haelyra 7bcb8dabee feat: preserve passive scoped coordination receipts from PR 3128 2026-10-11 01:55:20 -04:00
haelyra 07309c3eca fix: preserve locale selections during managed updates 2026-10-11 01:54:21 -04:00
Yann Roberto d9efa98bb6 fix(install): preserve locale selections during auto-update 2026-10-11 13:41:34 +08:00
montjeffrey f7f47679b6 fix(gateguard): make the external-contract question opt-in
- questionIdsFor and condensedHintFor take an optional
  { externalContract: true }; without it a code change that handles data
  asks data-schema only, and an unknown profile gets the original four
  questions and condensed hint.
- The hook reads GATEGUARD_EXTERNAL_CONTRACT_QUESTION with the same
  spellings as GATEGUARD_METRICS and passes it to the full denial, the
  condensed denial and the metrics record, so all three agree.
- The effectiveness harness's arm patch forwards the option, so an arm
  never drops it silently.

Docs: change-profile.md gains an External-contract question section and
qualifies "byte-identical to the fixed four questions"; design-notes.md,
SKILL.md (switch table, data rule, word-for-word set) and CHANGELOG say
the fifth question is opt-in; question-effectiveness.md and the harness
README note that the runner clears GATEGUARD_* variables, so a gate arm
from a current tree measures the gate without the question.
skill-triggers@1.json: registryDigest refreshed for the SKILL.md body
change; the description and triggers are unchanged.
2026-10-11 00:45:01 -04:00
montjeffrey 161713edce test(gateguard): pin the original four code questions and an opt-in external-contract question
8a7d6129 added the external-contract question for every code change that
handles data and updated the pinned tests to match, including the legacy
test "code condensed Edit hint for an unknown profile is unchanged". Its own
evaluation then found the gated arm did not improve (25 to 23 of 48), so the
question has no evidence behind it as a default.

- Restore the test expectations 8a7d6129 changed: questionIdsFor, the
  byte-identical code text for src/a.py, the condensed hints, and the hook
  question lists default to data-schema without external-contract.
- Add questionIdsFor/condensedHintFor cases with { externalContract: true }.
- Add hook cases: GATEGUARD_EXTERNAL_CONTRACT_QUESTION=1/true/ON asks it
  beside data-schema and in the unknown-profile set, never without data;
  unset, 0, false and off keep the original four.

Against main: target-class 5 failures, fact-force 10 failures.
2026-10-11 00:45:00 -04:00
montjeffrey 329ca4e11a docs(gateguard): document type filters, path patterns and lookups
- design-notes.md: new Type filters and Path patterns sections; Search
  scope extends the search-of-the-target rule to name lookups; Flag
  parsing lists the new value flags.
- change-profile.md: Unicode line terminators make an edit non-trivial.
- skills/gateguard/SKILL.md and CHANGELOG.md describe the same rules.
- skill-triggers@1.json: refresh registryDigest for the SKILL.md body
  change. The skill's description is unchanged, so triggers and
  triggersDigest are untouched, as in the plan-orchestrate refresh.
2026-10-10 23:38:48 -04:00
montjeffrey 64d8971a64 fix(gateguard): credit only searches that could have seen the target
- Read file-type filters as include and exclusion globs: rg -t/--type
  and the Grep tool's type include ripgrep 14.1's globs for the type,
  rg -T/--type-not exclude them, fd -e/--extension includes *.<ext>.
  An unknown type name, --type-add or --type-clear is an unreadable
  filter and never credits, like --exclude-from.
- Treat a path pattern as a filter: the Glob tool's pattern must match
  the target below its root; a shell glob operand must match the target
  or a directory above it; a git pathspec matches the same way with its
  * also matching /. One operand that admits the target is enough.
- Extend "a search of the target itself gives nothing" to searches
  confined to the target's own file name: when every include, the Glob
  pattern, or every path pattern ends in that exact name, the stem never
  credits, and the closest-miss note says it was a lookup.
- Tokenize PowerShell searches with backslashes kept as path separators,
  as the read-only shell check already does; the old literal-prefix scope
  hid that src\core\*.ts reached the parser as srccore*.ts.
- Make an edit non-trivial when either text holds U+2028, U+2029 or
  U+0085, which end a JavaScript or C# line comment; the lexer splits
  lines only at \n and \r.

Extracting applyLongFilter, grepDetail and stemCredits leaves every
touched function at or below its complexity on main.
2026-10-10 23:38:47 -04:00
montjeffrey 9faa6b76d2 test(gateguard): pin searches that never saw the target and Unicode line terminators
Each of these is credited on main, reproduced against upstream 2d515e4f:

- rg -t py / -T js / --type-not js, fd -e py, and the Grep tool's
  type: "py" credit an Edit of tokenizer.js. Type and extension values
  are skipped as plain value flags, so they never filter.
- Glob **/tokenizer.py, rg tokenizer src/*.py, and
  git grep tokenizer -- '*.py' credit tokenizer.js. The Glob pattern is
  never a filter, and a glob operand scopes as its literal directory.
- Glob **/tokenizer.js, find -name tokenizer.js, rg -g tokenizer.js and
  Grep glob: "tokenizer.js" credit tokenizer.js, although each search
  could only find the target itself.
- An Edit of "// note<U+2028>foo(1);" to "// note<U+2028>foo(2);" passes
  as comment-only, although JavaScript ends the comment at U+2028 and
  foo(2) runs.

Scenario 21-bypass-filter-forms adds ten must-deny steps and four
controls. Four hook controls that asserted exact-name lookups still
credit (find -name widget.py, Grep glob widget.py, Get-ChildItem
-Filter widget.py) now assert the lookup is denied; each keeps its
original purpose, that the exclusion parser leaves a positive include
alone, through a wildcard include (widget.*).
2026-10-10 23:38:47 -04:00
haelyra 2d515e4fc2 Merge pull request #3495 from affaan-m/integration/ecc-043-20261010
fix: integrate verified ECC stewardship batch (49 PRs)
2026-10-10 21:15:17 -04:00
haelyra f614e82ae5 fix(session): preserve alias identity when its store is unreadable 2026-10-10 20:38:40 -04:00