Skip to content

Releases: RapierCraftStudios/ForgeDock

v1.5.1

Choose a tag to compare

@github-actions github-actions released this 19 Jul 13:34

What's Changed

  • Fix: derive-finding-milestone.sh close-verb regex lacks word boundary, matches substrings by @RapierCraft in #2671
  • Fix: isSourceRepoSelf case-sensitive path compare misfires on case-insensitive FS by @RapierCraft in #2672
  • Refactor: extract duplicated atomic symlink-install sequence in journey.mjs by @RapierCraft in #2673
  • Refactor: decompose oversized forge() per-file loop in journey.mjs by @RapierCraft in #2688
  • Fix: architect skip path (chore:/docs: titles) strands issues at needs-human by @RapierCraft in #2691
  • fix(cli): NFC-normalize path operands in samePathOrUnder for darwin NFC/NFD parity by @RapierCraft in #2694
  • fix(scripts): convert bare drive path to file:// URL before ESM import in build-knowledge-index by @RapierCraft in #2695
  • fix(journey): close rename-readback TOCTOU in atomicSymlinkInstall (#2679) by @RapierCraft in #2693
  • Fix: document per-volume-vs-per-OS limitation in samePathOrUnder (#2675) by @RapierCraft in #2696
  • refactor(scripts): dedupe jq slugify expression in derive-finding-milestone.sh by @RapierCraft in #2697
  • Deploy staging → main: path-safety, TOCTOU, and pipeline fixes by @RapierCraft in #2699

Full Changelog: v1.5.0...v1.5.1

v1.5.0

Choose a tag to compare

@github-actions github-actions released this 19 Jul 04:32

What's Changed

  • Refactor: extract evidence-gate block from checkLabelTransition() by @RapierCraft in #2464
  • Fix: phase-registry drift check misses entirely-absent PHASE_MARKERS keys by @RapierCraft in #2469
  • fix(tests): guard ENOTDIR regression test's symlinkSync with EPERM/EACCES skip by @RapierCraft in #2473
  • fix(orchestrate): anchor P3 batching safety-exclusion on word boundaries, strip attribution boilerplate by @RapierCraft in #2471
  • Fix: anchor parseSatelliteRepos repo-key regex to YAML key boundary by @RapierCraft in #2475
  • fix(review-pr): derive priority:* label from Severity, not Confidence by @RapierCraft in #2472
  • fix(runner): append non-empty stderr on CLI-backend success instead of dropping it by @RapierCraft in #2476
  • docs(decisions): auto-ADRs from TRAJECTORY decisions (#2447) by @RapierCraft in #2486
  • fix(protocol): validate.js never checks REMEDIATION Re-gate outcome against reGateOutcomeValues by @RapierCraft in #2489
  • fix(cli): update flow falls back to relink + npm instructions on dirty source-repo clone by @RapierCraft in #2488
  • Refactor: split ~407-line runIssue() into separable helpers by @RapierCraft in #2495
  • fix(orchestrate): issue-dedup.sh --exclude so P3 batch issues don't collide with their own members by @RapierCraft in #2494
  • Fix: doctor --fix now overwrites stale regular-file command copies by @RapierCraft in #2497
  • Fix: Layer 1 file extraction scoped to deliverables headings, not whole-body scrape by @RapierCraft in #2500
  • fix(review-pr): stamp Code branch and derive milestone for review-findings by @RapierCraft in #2511
  • Fix: quote GH_REPO placeholder in phase-3-dependency.md Layer 1 call site by @RapierCraft in #2526
  • fix: add positive-path test for pre-joined single-token -R argv form by @RapierCraft in #2528
  • fix(scripts): harden derive-finding-milestone.sh stderr isolation and array expansion by @RapierCraft in #2527
  • fix(runner): sanitize appended stderr and fix empty-.result leading newline (#2522) by @RapierCraft in #2531
  • fix(cli): wrap relinkAndHint() in isSourceRepoSelf path to avoid misleading fast-forward error by @RapierCraft in #2529
  • fix(orchestrate): dispatch engine-first run-issue via backgrounded Bash, not blocking wait by @RapierCraft in #2535
  • fix: atomic tmp+rename for doctor-fix non-manifest copy repair by @RapierCraft in #2538
  • fix(review-pr): check severity-to-priority.sh exit code at both call sites by @RapierCraft in #2536
  • Fix: gh api failures indistinguishable from empty results in extract-affected-files.sh by @RapierCraft in #2544
  • fix(review-pr): P3 review findings — commands/review-pr.md, commands/review-pr-staging.md (batch #4) by @RapierCraft in #2556
  • Fix: back up stale command copy before doctor --fix overwrites it by @RapierCraft in #2557
  • feat(engine): auto-resume on session-limit hit — pause in-process and retry when usage cap resets by @RapierCraft in #2555
  • fix(orchestrate): anchor attribution-strip gsub to per-field generator shape (#2477) by @RapierCraft in #2552
  • fix(orchestrate): re-fetch updatedAt before code-branch repair guard's body write by @RapierCraft in #2563
  • fix(tests): describe .tmp write failure precisely, not mid-write by @RapierCraft in #2572
  • Fix: parseSessionLimitResetEpochMs accepts out-of-range hour values via modulo instead of rejecting by @RapierCraft in #2574
  • Fix: orphaned .tmp file on copyFile failure in doctor-fix atomic repair path by @RapierCraft in #2581
  • fix(orchestrate): fail closed when updatedAt re-fetch fails in code-branch repair guard by @RapierCraft in #2576
  • fix(scripts): harden GH_STDERR_TMP permissions and add trap cleanup in derive-finding-milestone.sh by @RapierCraft in #2578
  • docs(decisions): auto-ADRs from TRAJECTORY decisions (#2560) by @RapierCraft in #2588
  • fix(scripts): harden GH_STDERR_TMP permissions and trap cleanup in classify-lane.sh and doctor-pipeline-state.sh by @RapierCraft in #2592
  • Fix: PR base-ref value command-substitution risk in repair guard gh issue edit body (#2584) by @RapierCraft in #2594
  • Fix: batch P3 review findings — bin/journey.mjs doctor-fix repair path (#2566) by @RapierCraft in #2596
  • fix(scripts): harden GH_STDERR_TMP mktemp idiom in forge-run.sh with chmod 600 + trap cleanup by @RapierCraft in #2602
  • Fix: printf trailing newline in repair guard comment bodies (#2598) by @RapierCraft in #2605
  • Fix: saveCopiedManifest shares unsuffixed .tmp path across concurrent forge() invocations by @RapierCraft in #2609
  • Fix: pid-suffixed manifest tmp sibling can be orphaned on process crash by @rapiercraft-forgedock[bot] in #2622
  • Remediation should auto-merge to staging on APPROVED, not require a manual merge by @rapiercraft-forgedock[bot] in #2623
  • Fix: sibling symlink-relink branches share literal .tmp path, losing concurrent process gets uncaught EEXIST by @RapierCraft in #2618
  • fix: M7 auto-land bar keys on live baseRefName, not caller-overridable PR_BASE by @rapiercraft-forgedock[bot] in #2633
  • fix: re-read-and-merge manifest before final save to close last-writer-wins race by @rapiercraft-forgedock[bot] in #2635
  • Fix: literal 'null' baseRefName reaching relaxed auto-land branch by @rapiercraft-forgedock[bot] in #2636
  • fix(tests): pre-seed prior manifest content in journey.test.mjs write-failure regression test by @rapiercraft-forgedock[bot] in #2639
  • fix(review-pr): add manual-merge fallback to standalone non-main park comment by @rapiercraft-forgedock[bot] in #2641
  • Fix: correct stale PR_BASE reference to LIVE_BASE_REF in remediate.md Phase M7 by @rapiercraft-forgedock[bot] in #2640
  • fix(orchestrate): single-instance orchestrator lease + interrupt reaping for backgrounded engine dispatch by @rapiercraft-forgedock[bot] in #2638
  • Fix: Windows MSYS symlinks unreadable — verify traversability, fall back to copy; prune stale extensionless entries by @rapiercraft-forgedock[bot] in #2645
  • fix(orchestrate): cascade discovery lacks batch-start (T0) scope by @RapierCraft in #2647
  • Fix: tmp-indirect fresh-install symlink in journey.mjs to avoid uncaught EEXIST by @RapierCraft in #2648
  • fix(orchestrate): make classify-lane mandatory for Step 4C cascade findings by @RapierCraft in #2649
  • fix(orchestrate): guard Step 3D.1 BATCH_ID generation on FORGE_COORD_ISSUE (#2642) by @RapierCraft in #2650
  • Fix: linkPipelineScripts() non-tmp symlink race (review finding — PR #2618) by @RapierCraft in #2651
  • Fix: missing local declarations in check_orchestrator_lease() (#2643) by @RapierCraft in #2652
  • docs(orchestrate): document accepted-risk decision on spoofed FORGE:LEASE comment DoS surface by @RapierCraft in #2653
  • Fix: close residual TOCTOU window in forge() manifest final save by @RapierCraft in #2654
  • Fix: resolve relative symlink target against link dir, not cwd (bin/journey.mjs) by @RapierCraft in #2658
  • ...
Read more

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 17 Jul 12:35

What's Changed

  • fix(cli): add dirty-tree guard before branch switch in forgedock update by @RapierCraft in #2245
  • fix(ci): self-reference check-commands.yml in its own paths filters by @RapierCraft in #2246
  • fix(ci): gate publish-protocol.yml npm publish behind PROTOCOL_NPM_PUBLISH_ENABLED by @RapierCraft in #2248
  • fix(hooks): guard /./ and /../ trailing-slash forms in find root-scan guard by @RapierCraft in #2250
  • fix(engine-cli): formatTerminalDiagnostics uses run's effective maxAttempts (#2226) by @RapierCraft in #2252
  • fix(ci): SHA-pin first-party actions in codeql.yml by @RapierCraft in #2251
  • Fix: Phase 4 --fix DRY_RUN guard placement in /upgrade-deps by @RapierCraft in #2254
  • fix(engine): unresolved branch synthesizes ahead=0, escalates to needs-human after 1 attempt by @RapierCraft in #2255
  • fix(tests): report win32-skipped router tests as skipped, not passed by @RapierCraft in #2257
  • fix(review-pr): resolve CUSTOM_CONVENTIONS before interpolation in welcome comment by @RapierCraft in #2247
  • fix(scripts): forge-run.sh die() emits invalid JSON for gh stderr with backslashes/newlines by @RapierCraft in #2260
  • fix(orchestrate): scope gen>=2 cascade cap to autonomous cascade, add human-request path by @RapierCraft in #2249
  • refactor(protocol): share HTML-comment escaping between engine and protocol package by @RapierCraft in #2262
  • fix(journey): handle ENOTDIR per-path in removeOrphans instead of aborting whole persist by @RapierCraft in #2263
  • fix(ci): add deploy version guard against squash-merge package.json regression by @RapierCraft in #2266
  • fix(cli): forgedock update reports which install it actually updated by @RapierCraft in #2268
  • fix(quality-gate): remove private-repo residue from public corpus; close unscoped CI allowlist by @RapierCraft in #2267
  • fix(review-pr): welcome-comment gate now enforces documented single-PR-only precondition by @RapierCraft in #2269
  • fix(ci): eval-gate.yml omits itself from paths filter by @RapierCraft in #2275
  • fix(engine): runCliBackend never claims output above when none was captured by @RapierCraft in #2276
  • fix(ci): source banned-token-lint self-test pattern from single job-level env var by @rapiercraft-forgedock[bot] in #2280
  • fix(scripts): forge-run.sh json_str() C0 escaping + ACTION_ESCAPED (#2270) by @rapiercraft-forgedock[bot] in #2281
  • fix(ci): version-guard.yml fails closed on malformed package.json instead of passing by @rapiercraft-forgedock[bot] in #2279
  • fix(engine): CLI_BACKEND_FAILED retried as transient instead of fail-fast by @rapiercraft-forgedock[bot] in #2285
  • fix(cli): extract shared npm root -g resolution helper by @rapiercraft-forgedock[bot] in #2283
  • fix(orchestrate): accept bare P1/P2/P3 labels alongside priority:P in cascade triage by @rapiercraft-forgedock[bot] in #2282
  • fix(ci): five workflows omit themselves from their own paths filter by @rapiercraft-forgedock[bot] in #2284
  • fix(ci): pin Node version in version-guard.yml by @rapiercraft-forgedock[bot] in #2287
  • fix(ci): rename LINENO to LN and anchor fence/heading detection in side-effect gate by @rapiercraft-forgedock[bot] in #2286
  • fix(runner): bound and neutralize untrusted argv content in CLI failure diagnostic by @rapiercraft-forgedock[bot] in #2290
  • fix(review-pr): convert welcome-comment body to heredoc by @rapiercraft-forgedock[bot] in #2296
  • fix(engine): terminate() writes engine-error for tool failures, not needs-human by @rapiercraft-forgedock[bot] in #2295
  • fix(runner): neutralize Unicode bidi-override and C1 control chars in sanitizeArgvForLog by @rapiercraft-forgedock[bot] in #2297
  • Fix: dispatch remediation for gated leaf issues, guard unchanged-HEAD re-review by @rapiercraft-forgedock[bot] in #2291
  • fix(runner): prevent sanitizeArgvForLog truncation from splitting UTF-16 surrogate pairs by @rapiercraft-forgedock[bot] in #2300
  • feat(orchestrate): add orchestration.cascade config surface for cascade admission policy by @rapiercraft-forgedock[bot] in #2299
  • fix(orchestrate): both-uncapped cascade warning + review-finding fixes for #2234 by @RapierCraft in #2304
  • fix(ci): track true fence nesting depth in check-command-side-effects.sh by @rapiercraft-forgedock[bot] in #2303
  • fix(watch): derive workflow label set from labels.json, add findings lane by @RapierCraft in #2306
  • fix(ci): scope guard-match in check-command-side-effects.sh to the code block, not the section by @RapierCraft in #2311
  • fix(engine): claim and renew a real in-flight lease before phases run by @RapierCraft in #2309
  • fix(watch): escape owner/repo in heartbeat GraphQL query + add coverage by @RapierCraft in #2315
  • fix(ci): add EOF flush for unterminated fences in class_a_scan by @RapierCraft in #2317
  • feat(orchestrate): typed predicate classification + re-resolution engine module by @RapierCraft in #2316
  • fix(engine): emit phase progress output for in-flight run-issue runs by @RapierCraft in #2319
  • fix(engine): correct resolve.mjs docstring drift re foldNewMatches dispatch path by @RapierCraft in #2322
  • fix: three consistency nits in resolve.mjs + phase-4-execution.md mirror (#2320) by @RapierCraft in #2324
  • fix(engine): surface CLI session-limit reset time in engine-error terminal detail by @RapierCraft in #2323
  • fix(engine): validate leaseRenewIntervalMs < leaseTtlMs in runIssue() by @RapierCraft in #2327
  • fix(hooks): allow evidenced workflow:invalid after ready-to-build/building by @RapierCraft in #2330
  • Fix: batch P3 findings in bin/engine.mjs (phase-exit symmetry, stall-scanner citation, lease NaN guard) by @RapierCraft in #2335
  • Fix: hasInvalidReversalEvidence() requires trusted author on reversal evidence by @RapierCraft in #2334
  • fix(tests): rename vacuous lease-renewal test, add real timer-path coverage (#2333) by @RapierCraft in #2336
  • fix(hooks): fail closed on gh error for workflow:invalid evidence gate by @RapierCraft in #2354
  • Fix: publish.yml self-path trigger can skip the content-change guard on push by @RapierCraft in #2356
  • fix(ci): add admission.mjs / bash mirror parity check by @RapierCraft in #2357
  • fix(ci): pin actions/checkout and actions/setup-node to SHAs in version-guard.yml by @RapierCraft in #2364
  • fix(engine): join in-flight lease renewal before terminate() on the engine-error catch path (#2338) by @RapierCraft in #2362
  • feat(orchestrate): pre-flight source-PR triage hint for staging-review findings by @RapierCraft in #2365
  • fix(engine): emit INVESTIGATION:INVALID sentinel for INVALID verdicts by @RapierCraft in #2366
  • docs(labels): document workflow:engine-error taxonomy split from needs-human by @RapierCraft in #2367
  • fix(engine): add backpressure guard to renewLease() against overlapping renewal writes (#2348) by @RapierCraft in #2369
  • Fix: p...
Read more

v1.3.0

Choose a tag to compare

@github-actions github-actions released this 16 Jul 13:31

What's Changed

  • Fix: validate FORGE_LABEL_MAP value before gh --add-label by @rapiercraft-forge[bot] in #853
  • chore(scripts): remove dead FORGEDOCK_SCRIPTS/HOME exports from classify-lane.sh by @rapiercraft-forge[bot] in #854
  • Fix: validate adaptive_scripts.directory stays within repo root by @rapiercraft-forge[bot] in #855
  • fix(installer): remove Windows copy-mode command files on uninstall by @rapiercraft-forge[bot] in #857
  • Fix: guard post-loop i += 2 in stripJsonc() block comment handler by @rapiercraft-forge[bot] in #858
  • Fix: guard against duplicate FORGE_HOME export when removeForgeHomeFromProfile fails by @rapiercraft-forge[bot] in #859
  • Fix: use escape-aware regex in removeForgeHomeFromProfile() to handle paths with special chars by @rapiercraft-forge[bot] in #860
  • fix(installer): add explicit no-match guard in injectManagedBlock() (#851) by @rapiercraft-forge[bot] in #861
  • fix(installer): escape owner/repo/branch in forge.yaml template by @rapiercraft-forge[bot] in #862
  • docs(architecture): add Playwright MCP open-core boundary note by @rapiercraft-forge[bot] in #889
  • feat(installer): register + verify Playwright MCP in bin/forgedock.mjs by @rapiercraft-forge[bot] in #892
  • Feat: expose Playwright perf/console/network as quality signals in validate and review by @rapiercraft-forge[bot] in #891
  • Docs+Doctor: document Playwright MCP as guaranteed dependency, add doctor check, qa-sweep guard by @rapiercraft-forge[bot] in #890
  • Fix(doctor): split mcpReadable into fileReadable + hasMcpServers by @rapiercraft-forge[bot] in #909
  • Fix: pre-create milestone branches before wave to eliminate feature-lane branch race (#901) by @rapiercraft-forge[bot] in #908
  • Fix: scope MCP AGPL clearance to linking-based contamination by @rapiercraft-forge[bot] in #914
  • Fix: normalize REPO_PATH in adaptive bounds check (trailing-slash false positive) by @rapiercraft-forge[bot] in #915
  • Fix: exclude CLOSED-unmerged PRs from orchestrate 4C.5 lane-consistency check by @rapiercraft-forge[bot] in #918
  • docs(orchestrate): document bash 4+ requirement for Step 4A.pre.0 declare -A by @rapiercraft-forge[bot] in #922
  • Docs: distinguish inbound vs outbound contamination direction in MCP boundary section by @rapiercraft-forge[bot] in #921
  • chore(meta): improve README badges and npm package discoverability by @RapierCraft in #971
  • fix(devdocs): replace 'process-isolation' with 'boundary-isolation' in MCP boundary section by @RapierCraft in #966
  • Feat: Package ForgeDock as Claude Code plugin for marketplace distribution by @RapierCraft in #976
  • feat(community): add Discussions section to README and seed content by @RapierCraft in #977
  • Feat: Generate shareable pipeline run summary after /work-on completion by @RapierCraft in #981
  • Feat: Add VitePress documentation site with GitHub Pages auto-deploy by @RapierCraft in #984
  • Feat(autopilot): cron mode via GitHub Actions for continuous repo health by @RapierCraft in #982
  • Feat(commands): /upgrade-deps — autonomous dependency upgrade pipeline (#959) by @RapierCraft in #983
  • Feat(review-pr): automated new-contributor onboarding in PR comments by @RapierCraft in #988
  • fix(docs): update Quick Start curl URL to milestone branch by @rapiercraft-forge[bot] in #1001
  • fix(commands): upgrade-deps Phase 1A else-branch conflates skip reasons (#993) by @rapiercraft-forge[bot] in #1002
  • Feat: Add optional attribution link to FORGE annotation comments by @rapiercraft-forge[bot] in #1006
  • fix(docs): align CONFIG.md branding read pattern to use literal newline by @rapiercraft-forge[bot] in #1009
  • Feat: Cursor adapter for ForgeDock pipeline (#964) by @rapiercraft-forge[bot] in #1013
  • Feat: Universal shell-script entry point for non-Claude agents (forge-run.sh) by @rapiercraft-forge[bot] in #1014
  • Feat: Aider adapter for ForgeDock pipeline (#963) by @rapiercraft-forge[bot] in #1015
  • fix(scripts): replace no-op ts() fallback with static safe default in forge-run.sh by @RapierCraft in #1019
  • fix(scripts): remove dead GH_REPO_FLAG variable in forge-run.sh by @RapierCraft in #1023
  • Feat: OpenCode adapter for ForgeDock pipeline by @RapierCraft in #1026
  • Feat(config): add trigger_on_merge/trigger_paths/auto_run fields to satellite schema by @rapiercraft-forge[bot] in #1028
  • Feat(templates): add cross-repo-trigger.yml GitHub Actions workflow template by @rapiercraft-forge[bot] in #1029
  • Feat(sync-ecosystem): add 'trigger' subcommand for incoming cross-repo dispatch by @rapiercraft-forge[bot] in #1032
  • fix(forge-stats): reclassify sync-ecosystem.md from Utility to Specialist by @rapiercraft-forge[bot] in #1035
  • Ship: Playwright MCP — first-class browser harness by @rapiercraft-forge[bot] in #1711
  • fix(security): add secrets/ to .gitignore so bot-token PEM can't be committed by @rapiercraft-forgedock[bot] in #2129
  • docs(protocol): correct stale reserved-type counts (13/16 vs actual 20) in headers by @rapiercraft-forgedock[bot] in #2130
  • fix(hooks): widen Rule 5 find-root guard for trailing-slash/dot root tokens (#2113) by @rapiercraft-forgedock[bot] in #2131
  • Fix: dead links fail every VitePress build — docs site has never deployed by @rapiercraft-forgedock[bot] in #2132
  • docs: fix eval baseline link + command-count and branding drift sweep by @RapierCraft in #2134
  • Fix: FORGE:STATE codec does not escape <!-- comment opener (emit.js parity) by @RapierCraft in #2136
  • feat(geo): add llms.txt and llms-full.txt for AI-search discoverability by @RapierCraft in #2138
  • feat(seo): VitePress SEO baseline — sitemap, canonical hostname, og/twitter meta by @RapierCraft in #2139
  • fix(ci): replace broken actions-dco with inline git-log DCO check by @RapierCraft in #2135
  • chore(brand): unify homepage/social metadata so every surface funnels to the docs site by @RapierCraft in #2147
  • chore(protocol): add CHANGELOG and version-bump policy for schema additions by @RapierCraft in #2146
  • Ship: Developer Experience & Distribution by @rapiercraft-forge[bot] in #1712
  • fix(docs): derive SITE_HOSTNAME from base config to prevent drift by @RapierCraft in #2149
  • docs(readme): lead with concrete value, add prerequisites callout, compress hero GIF by @RapierCraft in #2152
  • test(protocol): add CARD conformance fixtures and validate() coverage by @rapiercraft-forgedock[bot] in #2153
  • fix(cli): update self-updates global npm installs, guards persistHome downgrade, prunes orphans by @rapiercraft-forgedock[bot] in #2154
  • fix(ci): quote workflow_dispatch limit input via env: indirection in forgedock-autopilot.yml by @rapiercraft-forgedock[bot] in #2156
  • fix: generalize transformHead routePath for nested index pages by @rapiercraft-forgedock[bot] in #2160
  • fix: avoid unsafe quote-splicing in upgrade-deps.md jq example by @Rapie...
Read more

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 16 Jul 04:46

What's Changed

  • Fix: quote argument-hint frontmatter values for Copilot CLI compatibility by @RapierCraft in #2008
  • feat(engine): support Claude Code CLI as an execution backend so forgedock run doesn't require ANTHROPIC_API_KEY by @RapierCraft in #2009
  • feat(init): use local Claude Code CLI for AI enrichment when ANTHROPIC_API_KEY is absent by @rapiercraft-forgedock[bot] in #2015
  • fix: promote /review-pr-staging from 'extras' to 'core' install tier by @rapiercraft-forgedock[bot] in #2040
  • fix(ci): add concurrency guard and rollback runbook to publish.yml by @rapiercraft-forgedock[bot] in #2042
  • fix(cli): error on missing --backend/--model/--max-iterations value instead of silent fallback by @rapiercraft-forgedock[bot] in #2041
  • fix(init): add FORGEDOCK_INIT_BACKEND override for AI enrichment ladder by @RapierCraft in #2045
  • test(runner): assert exact CLI invocation content in runCliBackend by @RapierCraft in #2044
  • Fix: enforce read-only CLI enrichment with --allowedTools instead of --dangerously-skip-permissions by @RapierCraft in #2043
  • Fix: warn when --model/--max-iterations are dropped on cli backend by @RapierCraft in #2046
  • Fix: /review-pr resolves verify-*.sh scripts via unset $FORGE_HOME (incomplete #1984 fix, closes remaining #2035 gaps) by @RapierCraft in #2048
  • fix(ci): npm ci before tests and conventional-commit-aware version bump in publish.yml by @RapierCraft in #2051
  • fix(engine): thread optional backend/model override through run-issue engine by @RapierCraft in #2050
  • Fix: enrich() never forwards its injectable env option to enrichViaApi by @RapierCraft in #2052
  • fix(runner): cache CLI-availability probe per cwd to avoid redundant claude --version spawns by @RapierCraft in #2056
  • Fix: deterministically block find rooted at / or a drive mount (#2034) by @RapierCraft in #2049
  • fix(engine): forward command spec to cli backend via --append-system-prompt-file by @RapierCraft in #2060
  • fix(engine): surface discoverability notice when auto backend silently prefers claude CLI over ANTHROPIC_API_KEY by @RapierCraft in #2063
  • fix(docs): sync File Resolution Discipline section to canonical docs/spec/review-protocol.md by @RapierCraft in #2065
  • feat(attribution): brand pipeline output with ForgeDock signature, suppress Claude Code attribution by @RapierCraft in #2064
  • fix(engine): fail fast on invalid --backend instead of retrying as transient by @RapierCraft in #2066
  • fix(security): scrub ANTHROPIC_API_KEY from CLI-backend spawnSync child env by @RapierCraft in #2068
  • fix(hooks): close find-root guard empty-quote injection bypass by @RapierCraft in #2067
  • refactor(engine): extract shared resolveBackendLadder helper by @RapierCraft in #2070
  • fix(init): resolve P3 review findings — bin/init-enrich-cli.mjs (batch #2) by @RapierCraft in #2071
  • fix(engine): align backend validation wording and unify CLI-spawn test seams by @RapierCraft in #2074
  • fix(engine): import VALID_BACKENDS from runner.mjs instead of duplicating by @RapierCraft in #2078
  • fix(runner): P3 review findings batch — cache TTL/size bound + temp-dir try/finally scope (#2062) by @RapierCraft in #2080
  • chore(runner): make VALID_BACKENDS export genuinely read-only by @RapierCraft in #2081
  • Fix: /issue must not require user confirmation before creating by @RapierCraft in #2082
  • fix(orchestrate): close coordination issue (claims board) after batch by @RapierCraft in #2083
  • fix(orchestrate): correct overstated similarity claim in Step 5C claims-query comment by @RapierCraft in #2092
  • feat(issue): add programmatic invocation contract to /issue by @RapierCraft in #2093
  • fix(issue): harden /issue programmatic arg-parser (unknown-flag + comma labels) by @RapierCraft in #2098
  • docs: document /issue create-hook as required path, forbid raw gh issue create by @RapierCraft in #2099
  • refactor: route pipeline issue creation (milestone/orchestrate/decompose) through /issue create-hook by @RapierCraft in #2100
  • refactor(commands): route audit/finding-tool issue creation through /issue create-hook by @RapierCraft in #2102
  • refactor(commands): route review-finding issue creation through /issue create-hook by @RapierCraft in #2101
  • refactor: route automation-driven issue creation through /issue create-hook by @RapierCraft in #2104
  • refactor(pipeline-health): route proposal issue creation through /issue create-hook by @RapierCraft in #2103
  • fix(pipeline-health): harden /issue call-sites (escape $SLUG injection + config propagation) by @RapierCraft in #2109
  • fix: /issue programmatic arg-parser robustness + injection-safety (P1) by @RapierCraft in #2108
  • Fix: review dispatch mandates Task tool and forbids Agent — unsatisfiable when only Agent exists by @RapierCraft in #2111
  • Deploy: staging -> main (31 commits: /issue hardening, pipeline-health robustness, init-enrich CLI) by @RapierCraft in #2112

Full Changelog: v1.1.11...v1.2.0

v1.1.11

Choose a tag to compare

@github-actions github-actions released this 12 Jul 02:42

What's Changed

  • Fix: resolveGitRoot returns forward-slash path on Windows instead of normalized native path by @RapierCraft in #1987
  • Fix: danger-zones.mjs spawnSync migration drops git stderr from error warnings by @RapierCraft in #1985
  • Fix: auto-merge auto-land bar counts unauthenticated PR comments as approvals by @RapierCraft in #1986
  • Fix: transition-label.sh post-removal verification masks API failures as success by @RapierCraft in #1988
  • fix: doctor --fix inflates fixesApplied counter via shared installRepairRan flag (#1975) by @RapierCraft in #1989
  • Fix: remove runaway find / -iname classify-lane.sh via deterministic script resolution by @RapierCraft in #1993
  • Fix: transition-label.sh pre-removal CURRENT_ISSUE_LABELS fetch masks API failure by @RapierCraft in #1994
  • Fix: transition-label.sh --validate mode CURRENT_LABELS fetch masks API failure by @RapierCraft in #1996
  • Feat: add version command and --version/-v flag with latest-version check by @RapierCraft in #1995
  • feat(journey): writeForgeYaml emits all 16 optional sections from forge.yaml.example by @RapierCraft in #1998
  • Fix: ISSUE_LABELS fetch in validate.md masks API failure, silently skips finding-lifecycle transition by @RapierCraft in #1999
  • feat(cli): add npx forgedock config migrate to backfill forge.yaml optional sections by @RapierCraft in #2000
  • Staging rollup: version command, writeForgeYaml sections, label-fetch reliability fixes by @RapierCraft in #2001

Full Changelog: v1.1.10...v1.1.11

v1.1.10

Choose a tag to compare

@github-actions github-actions released this 10 Jul 12:23

What's Changed

  • fix(install): adopt pre-manifest regular-file copies silently on update by @RapierCraft in #1980

Full Changelog: v1.1.9...v1.1.10

v1.1.9

Choose a tag to compare

@github-actions github-actions released this 10 Jul 12:11

What's Changed

  • fix(ci): align ci.yml node-version with publish/eval (24) by @RapierCraft in #1854
  • Fix: types.js CARD comment omits colon (unparseable in that form) by @RapierCraft in #1855
  • Fix: card.kind.toUpperCase() can crash recall on malformed ledger line by @RapierCraft in #1857
  • Fix: danger-zones execSync with interpolated repoPath — use spawnSync array by @RapierCraft in #1856
  • fix(pipeline): strip markdown emphasis before parent-reference regex match by @RapierCraft in #1864
  • Fix: propagate workflow:awaiting-merge exclusivity to recover-orphans and cleanup by @RapierCraft in #1866
  • perf(work-on): always fork review + quality-gate to sub-agents to stop prompt-cache escape by @RapierCraft in #1870
  • Fix: commands/cleanup.md Phase 4B P3 Batch Sweep diverges from orchestrate's batching rule (#1828) by @RapierCraft in #1863
  • Fix: ACCEPTANCE_CHECK target=/matcher= parsing breaks on multi-word/piped shell command values by @RapierCraft in #1869
  • Fix: rename chains not resolved transitively in recall.mjs by @RapierCraft in #1871
  • Fix: peer-claim self-exclusion grep no-op — false self-overlap on resume (#1841) by @RapierCraft in #1865
  • Fix: template-resolution guard for review-pr-agents — no more silent solo-review degradation by @RapierCraft in #1867
  • feat(orchestrate): human-gated idle/backpressure policy — pause and report instead of net-negative cascade churn by @RapierCraft in #1875
  • Fix: scope transition-label.sh needs-human clear to awaiting-merge by @RapierCraft in #1873
  • fix(cli): restore overwrite-confirmation gate on config pickup (#1850) by @RapierCraft in #1877
  • Feat(config): add agents.default_model to forge.yaml for main-agent model override by @RapierCraft in #1872
  • perf(work-on): stop redundant GitHub re-reads, gate heartbeats behind orchestration flag by @RapierCraft in #1878
  • feat(config): add agents.subagent_model to forge.yaml for sub-agent model override by @RapierCraft in #1886
  • fix(work-on): correct non-functional Haiku model-tier claim, foreground effort:low (#1827) by @RapierCraft in #1888
  • Fix: retag review-pr-agents/ and orchestrate/ sub-phase files as install:core by @RapierCraft in #1889
  • Fix: danger-zones spawnSync timeout/signal kill collapses to 'exit code null' by @RapierCraft in #1891
  • perf(orchestrate): forward same-file current-state brief to serialized DAG successors by @RapierCraft in #1898
  • feat(cli): surface uninstall + help in post-install output by @RapierCraft in #1897
  • Fix: anchor ACCEPTANCE_CHECK extraction against description= field hijack by @RapierCraft in #1896
  • fix(orchestrate): stop using needs-human as a domain-based pre-staging merge gate by @RapierCraft in #1899
  • Feat: first-class remediation mode (/work-on --remediate) by @RapierCraft in #1900
  • feat(installer): detect and warn when install path resolves into an ephemeral npm/npx cache directory by @RapierCraft in #1905
  • feat(installer): environment detection module (platform/WSL/shell) + preflight reporting by @RapierCraft in #1906
  • perf(orchestrate): add per-batch token budget to Step 4C cascade control (#1858) by @RapierCraft in #1907
  • fix(installer): restore pipeline scripts install step, expand CLI banner by @RapierCraft in #1911
  • feat(orchestrate): terse narration mode + model-tiering cross-reference (#1862) by @RapierCraft in #1919
  • feat(installer): warn on WSL vs Windows cross-environment install conflicts by @RapierCraft in #1914
  • Fix: case-sensitivity inconsistency in cross-env install detection regexes by @RapierCraft in #1920
  • feat: add known-slow-test skip config to prevent /work-on stall-on-hanging-suite by @RapierCraft in #1921
  • fix(orchestrate): add Phase 3 completion gate — materialize DAG before dispatch by @RapierCraft in #1924
  • Fix: transition-label.sh silently swallows stale-label removal failures by @RapierCraft in #1923
  • Fix: GitHub App install provides no value — honest copy, doctor check, docs by @RapierCraft in #1928
  • Fix: PREFIX truncation cuts into quoted target/matcher when value contains literal description= by @RapierCraft in #1925
  • Fix: update command gives real version check for npx installs by @RapierCraft in #1922
  • Fix: add timeout guard to WSL UNC path probes in detectCrossEnvInstall by @RapierCraft in #1930
  • Fix: linkPipelineScripts() content-comparison on copy-fallback path (#1916) by @RapierCraft in #1933
  • fix(orchestrate): enforce concurrency cap on Phase 4 dispatch by @RapierCraft in #1934
  • fix: remove dead WSL_DISTRO_NAME fallback in detectWSL /proc/version branch by @RapierCraft in #1938
  • fix(orchestrate): SURFACE_FILE_MEMBERS reset comment incorrect — declare -A does not clear existing array by @RapierCraft in #1939
  • Fix: compareVersions() no longer coerces prerelease segments to 0 by @RapierCraft in #1940
  • docs: reconcile project-scoped install claims with always-global behavior by @RapierCraft in #1942
  • Fix: transition-label.sh exit-1 on persistent failure skips awaiting-merge needs-human clear by @RapierCraft in #1941
  • Fix: cap fetchLatestVersion() response body at 64KB by @RapierCraft in #1951
  • Fix: drop file-overlap DAG edges from predecessors with no conflicting code by @RapierCraft in #1950
  • fix(hooks): session-start nudge tracking uses resolved git root (#1927) by @RapierCraft in #1952
  • Fix: token-budget report row uses $ currency sigil for a non-dollar metric by @RapierCraft in #1956
  • Feat: severity-banded fix cards + rotating logo taglines by @RapierCraft in #1953
  • feat(update): show diff-aware changelog summary on update by @RapierCraft in #1958
  • feat(install): write machine-readable install-receipt.json by @RapierCraft in #1959
  • feat(install): persistent ~/.forge/ toolset home with npm-cache migration by @RapierCraft in #1960
  • feat(cli): proactive demo offer + rich re-entry dashboard by @RapierCraft in #1961
  • Feat: doctor --fix auto-remediation flag by @RapierCraft in #1963
  • docs: clarify parseInt-only scope of compareVersions() (#1949) by @RapierCraft in #1965
  • Fix: makeIo() gh/git exec has no timeout — status dashboard can hang by @RapierCraft in #1967
  • fix: reframe tautological sibling-projects subtest in session-start.test.mjs by @RapierCraft in #1966
  • Fix: renderLogo tagline lookup leaks Object.prototype members by @RapierCraft in #1968
  • fix(cli): wire tagline and fixCard severity call sites by @RapierCraft in #1970
  • Fix: stepHeader STEP_STATUS lookup leaks Object.prototype members by @RapierCraft in #1971
  • fix(ci): allowlist maintainer identities in DCO check by @RapierCraft in #1972
  • test(doctor): add --fix coverage for Check 7 (GitHub workflow labels) by @RapierCraft in https://github.com/RapierCraftStud...
Read more

v1.1.8

Choose a tag to compare

@github-actions github-actions released this 08 Jul 12:51

What's Changed

  • fix(autopilot): resolve safety-rule contradictions and P0-override bypasses by @rapiercraft-forge[bot] in #1758
  • feat(quality-gate): wire-through proof for guards; doctor checks fail closed by @rapiercraft-forge[bot] in #1762
  • fix(pipeline): wire validated/false-positive verdicts into finding lifecycle by @rapiercraft-forge[bot] in #1760
  • feat(memory): module dossiers — auto-maintained per-module files in devdocs by @rapiercraft-forge[bot] in #1761
  • feat(engine): checkable invariants — hook preconditions + run-log temporal rules by @rapiercraft-forge[bot] in #1763
  • feat(memory): persistent repo map — blob-hash-keyed orientation index by @rapiercraft-forge[bot] in #1764
  • feat(spec-graph): clone-drift check for blocks shared across sibling specs by @rapiercraft-forge[bot] in #1765
  • fix(autopilot): delegate label hygiene to /cleanup, document no-direct-mutation rule by @rapiercraft-forgedock[bot] in #1777
  • feat(protocol): route all annotation writes/reads through packages/protocol by @rapiercraft-forge[bot] in #1769
  • feat(security): systemic secret-gist guard — hook block + doctor audit by @rapiercraft-forge[bot] in #1759
  • refactor(autopilot): add per-issue terminal-state verification after dispatch by @rapiercraft-forgedock[bot] in #1778
  • feat(orchestrate): claims board — interface claims for claim-level parallelism by @rapiercraft-forgedock[bot] in #1781
  • feat(memory): Forge Ledger — incremental knowledge index + forge recall CLI by @rapiercraft-forgedock[bot] in #1782
  • fix(autopilot): fix-target selection query contradicts spec ranking by @rapiercraft-forge[bot] in #1784
  • feat(quality-gate): learned rules — run gate.d/ and promote recurring patterns by @rapiercraft-forge[bot] in #1786
  • feat(memory): auto-ADRs from TRAJECTORY decisions with staleness anchors by @rapiercraft-forge[bot] in #1789
  • feat(investigate): dedup via forge recall — verify deltas, not re-derive by @rapiercraft-forge[bot] in #1785
  • feat(pipeline-health): confidence calibration from run outcomes by @rapiercraft-forge[bot] in #1787
  • Feat: danger zones + persisted co-change matrix from the ledger by @rapiercraft-forge[bot] in #1788
  • Feat(spec-doctor): evidence-backed spec evolution PRs gated by eval corpus by @rapiercraft-forge[bot] in #1790
  • feat(autopilot): durable cycle state — FORGE:AUTOPILOT_CYCLE + baseline deltas + resume by @rapiercraft-forge[bot] in #1792
  • feat(orchestrate): economic scheduling — value/cost DAG order + exploration by @rapiercraft-forgedock[bot] in #1794
  • feat(context): danger-zone rule cards in a fixed 400-token context slot by @rapiercraft-forge[bot] in #1797
  • feat(ecosystem): pattern exchange — cross-repo stack-tagged pattern feeds by @rapiercraft-forge[bot] in #1798
  • feat(autopilot): declared autonomy policy in forge.yaml — headless approval + budget by @rapiercraft-forge[bot] in #1800
  • feat(review-pr): provenance-based trust escalation for review breadth by @rapiercraft-forge[bot] in #1799
  • refactor(autopilot): genericize recon — config-gated collectors, timeouts, node not python3 by @rapiercraft-forge[bot] in #1805
  • fix(autopilot): route issue creation and dedup through canonical paths by @rapiercraft-forge[bot] in #1808
  • feat(pipeline): add workflow:awaiting-merge state for remediated + re-approved needs-human PRs (#1810) by @rapiercraft-forge[bot] in #1816
  • feat(orchestrate): emit consolidated merge-ready summary + single batch-merge command at human-gated boundary by @rapiercraft-forge[bot] in #1821
  • fix(orchestrate): reconcile needs-human DAG-readiness/failure contradiction by @rapiercraft-forge[bot] in #1824
  • feat(orchestrate): auto-club cascade P3 review-findings by surface area by @rapiercraft-forge[bot] in #1831
  • fix(review-findings): resolve 26 staging review findings blocking deploy by @rapiercraft-forgedock[bot] in #1839
  • fix(review): resolve CONFIRMED findings from PR #1838 staging re-review by @rapiercraft-forgedock[bot] in #1840
  • Ship staging → main: protocol, ledger, orchestration & autopilot batch (67 commits) by @rapiercraft-forgedock[bot] in #1838

New Contributors

  • @rapiercraft-forgedock[bot] made their first contribution in #1777

Full Changelog: v1.1.7...v1.1.8

v1.1.7

Choose a tag to compare

@github-actions github-actions released this 08 Jul 01:37

What's Changed

  • fix(devdocs): mark closed milestones as shipped in architecture.md by @rapiercraft-forge[bot] in #1721
  • feat(journey): add GitHub App install prompt to npx forgedock onboarding by @rapiercraft-forge[bot] in #1723
  • fix(ux): reframe forgedock-CLI-not-in-PATH as INFO not WARNING by @rapiercraft-forge[bot] in #1726
  • Release: bot rename, onboarding install prompt, architecture updates by @rapiercraft-forge[bot] in #1724

Full Changelog: v1.1.6...v1.1.7