mirror of
https://github.com/Jeuners/ECC.git
synced 2026-09-09 15:02:30 +02:00
actions.js:
- Add assertValidRepo/assertValidIssueNumber guards at the top of all
action handlers (applyClaim, applySync, applyValidate, applyPublish,
applyReview, applyDecompose, applyUnblock) for fast-fail validation
- applyValidate: fix status transition — set 'validated' unconditionally
when ok=true instead of preserving 'blocked' (was inconsistent with
projectState becoming 'ready')
gh-api.js:
- runGh: preserve GITHUB_TOKEN by default; only delete when caller
explicitly sets options.stripGithubToken=true (was deleting by
default, breaking CI)
parsing.js:
- extractCoordinationState: throw SyntaxError on malformed JSON instead
of silently returning null — lets callers distinguish bad JSON from
absent marker
- normalizeBodyForComparison: fix regex to match JSON-quoted form
"lastSyncAt": ... instead of bare lastSyncAt: ...
policy.js:
- loadPolicy: validate that parsed JSON is a plain object before
spreading; coerce nested fields (labels, review, validation,
branchModel, project, fieldNames) to objects before merging
state.js:
- assertIssueClaimable: block re-claim on status alone (not status AND
owner) to prevent {status:'claimed', owner:null} bypass; use
state.owner || 'unknown' in error message
- getCoordinationState: catch SyntaxError from extractCoordinationState,
log warning to stderr, fall back to default state
tests/lib:
- Update malformed-JSON test to expect SyntaxError throw instead of null
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| agent-compress.test.js | ||
| agent-data-home.test.js | ||
| changed-files-store.test.js | ||
| command-plugin-root.test.js | ||
| control-pane-actions.test.js | ||
| control-pane-state.test.js | ||
| cost-estimate.test.js | ||
| github-coordination.test.js | ||
| inspection.test.js | ||
| install-config.test.js | ||
| install-executor.test.js | ||
| install-lifecycle.test.js | ||
| install-manifests.test.js | ||
| install-request.test.js | ||
| install-state.test.js | ||
| install-targets.test.js | ||
| locale-install.test.js | ||
| mcp-config.test.js | ||
| mcp-inventory.test.js | ||
| observer-sessions.test.js | ||
| orchestration-session.test.js | ||
| package-manager.test.js | ||
| project-detect.test.js | ||
| resolve-ecc-root.test.js | ||
| resolve-formatter.test.js | ||
| selective-install.test.js | ||
| session-adapters-codex.test.js | ||
| session-adapters-opencode.test.js | ||
| session-adapters.test.js | ||
| session-aliases.test.js | ||
| session-bridge.test.js | ||
| session-manager.test.js | ||
| shell-split.test.js | ||
| skill-dashboard.test.js | ||
| skill-evolution.test.js | ||
| skill-improvement.test.js | ||
| state-store.test.js | ||
| tmux-worktree-orchestrator.test.js | ||
| utils.test.js | ||
| worktree-lifecycle.test.js | ||