Skip to content

v1.12.0

Latest

Choose a tag to compare

@github-actions github-actions released this 30 Aug 03:06
· 6 commits to next since this release

Install

npm i @opengsd/gsd-core@1.12.0
# or
npm i @opengsd/gsd-core@latest

What's Changed

Feature

  • feat(#2734): surface STATE.md commit-age on the statusline by @trek-e in #3700
  • feat(#2790): add read-only planning.inspect schema-v1 snapshot query by @trek-e in #3708
  • feat(#2845): require provenance for UI-SPEC component inventories by @trek-e in #3745
  • feat(#2398): consensus gate for CYCLE_SUMMARY on multi-reviewer runs by @trek-e in #3755
  • feat(#3753): run docs guards on the PR that changes the docs they read by @trek-e in #3787
  • feat(#3034): add opt-in parallel reviewer lanes by @trek-e in #3822
  • feat(#3227): publish machine-readable state contract at step boundaries by @trek-e in #3824
  • feat(#3146): resolve gsd_run so workflows cannot reach a foreign gsd-tools by @trek-e in #3831
  • feat(#3840): generate docs/FEATURES.md from per-feature fragments by @trek-e in #3845
  • feat(#3841): assert gsd-tools identity on every state-mutating verb by @trek-e in #3848
  • feat(#3970): per-task external-tracker content-resolution seam by @trek-e in #4000

Enhancement

  • enhance(#2401): ground verify-command paths and inherit prior-phase commands by @trek-e in #3678
  • enhance(#2475): scope ADR-443 item 1 to the operator surface and ratify the ADR by @trek-e in #3688
  • enhance(#2554): resolve code review depth from path-scoped override rules by @trek-e in #3695
  • enhance(#2951): refuse [VERIFIED] for a compatibility claim resting on absent metadata by @trek-e in #3718
  • enhance(#2856): add default-off live-DOM UAT capability by @trek-e in #3716
  • enhance(#2971): strict planning filter mode for /gsd-pr-branch by @trek-e in #3720
  • enhance(#3028): responsive Markdown separators instead of fixed-width rules by @trek-e in #3789
  • enhance(#3172): require a stated failing direction for every automated acceptance command by @trek-e in #3825
  • enh(#3866): dispatch step and contribution hooks at verify:pre by @trek-e in #3869
  • enhance(#3871): the state transaction — mandatory snapshot, open()/rebuild() by @trek-e in #3874
  • enhance(#3872): what a command reports it wrote — the transaction diff by @trek-e in #3878
  • enhance(#3873): the STATE.md schema — one owner, generated artifacts by @trek-e in #3880
  • enhance(#3882): stop sentinel phases skewing estimation calibration by @trek-e in #3893
  • enhance(#3883): route every slug call site through its canonical owner by @trek-e in #3896
  • enhance(#3881): one YAML parser — vendored js-yaml replaces the hand-rolled dialect by @trek-e in #3888
  • enhance(#3904): one exit module — generate the scripts-side copy from a single source by @trek-e in #3917
  • enhance(#3915): stryker on the official tap runner, 29m to 12m on the critical path by @trek-e in #3919
  • enhance(#3905): the exit-code registry — one number, one meaning, enforced at build by @trek-e in #3920
  • enhance(#3884): failure is a value — strict argv, and --pick that signals absence by @trek-e in #3922
  • enhance(#3906): two terminators over one registry, with a versioned exit projection by @trek-e in #3924
  • enhance(#3885): no silent swallow, and no verdict manufactured from dropped data by @trek-e in #3925
  • enhance(#3907): gates report no-input instead of a verdict they never reached by @trek-e in #3932
  • enhance(#3908): the scanners distinguish an empty diff from one they could not compute by @trek-e in #3937
  • enhance(#3897): ADR-3473 §8.3 rungs 2-4 — runtime marker, derived Codex sandbox, short-form depends_on by @trek-e in #3941
  • enhance(#3909): a probe that could not run no longer asserts a verdict by @trek-e in #3944
  • enhance(#3942): the emitted-drift ack is PR-lifetime data — move it to a commit trailer by @trek-e in #3954
  • enhance(#3911): hooks declare their crash policy by @trek-e in #3960
  • enhance(#3951): B6+B7 — widen two unreachable lint rules and make the guard ledger true by @trek-e in #3965
  • enhance(#3910): the raw terminator is banned by construction by @trek-e in #3980
  • enhance(#3626): make CONTEXT.md seam claims checkable via a SEAM.*.enforced-by gate by @trek-e in #3975
  • enhance(#3912): gsd-tools declares outcomes, pinned at v1 by @trek-e in #3983
  • enhance(#3267): reduce handleEvaluate complexity below refactor-trigger's own threshold by @trek-e in #3978
  • enhance(#3624): local/no-exact-case-env-access — ratchet ADR-1703 onto production env reads (epic #3411 Phase 4) by @trek-e in #3976
  • enhance(#3913): docs, and the guards come down by @trek-e in #3994
  • enhance(#3987): guard slug re-derivation and the swallowed-precondition shape — §8.5 was guardable after all by @trek-e in #3999
  • enhance(#3914): every phase records a truthful guard ledger by @trek-e in #4018
  • enhance(#4036): persist CI shard/job timeout-vs-cap trending, warn at 90% by @trek-e in #4043
  • enhance(#3552): warn on additional protected branches beyond the resolved base branch by @denniyahh in #3648

Fix

  • fix(#3602): bind model resolution for every workflow subagent spawn by @trek-e in #3670
  • fix(#3604): make glossary ref visibility independent of backtick parity by @trek-e in #3680
  • fix(#3606): validate hook-kind coverage at call sites and dispatch generically by @trek-e in #3687
  • fix(#3610): hoist surviving top-level codex config keys to file scope on merge by @trek-e in #3690
  • fix(#3611): decode entity-escaped ampersands and split shell segments quote-aware by @trek-e in #3693
  • fix(#3637): carry the full executor contract in the orchestrator-worktree spawn by @trek-e in #3694
  • fix(#3639): dir-aware sentinel recognition for the disk-side guards by @trek-e in #3698
  • fix(#2773): feed the spec-phase edge probe English-translated requirement text by @trek-e in #3713
  • fix(#3640): isolate the drift cli e2e fixture via a --root override by @trek-e in #3722
  • fix(#3641): make v005/v004 see bracket-convention phase entries by @trek-e in #3723
  • fix(#3642): stop the single-section total_phases leak into an absent milestone by @trek-e in #3727
  • fix(#3645): tracked-source rule for planner/pattern-mapper path resolution by @trek-e in #3728
  • fix(#3651): prescribe only writes config-set accepts in integrations flow by @trek-e in #3732
  • fix(#3031): opt-in reclaim of GSD hooks orphaned in ~/.kimi by @trek-e in #3731
  • fix(#3657): tolerate commonmark fence widths in ledger readers by @trek-e in #3733
  • fix(#3659): make the worktree base-check trust evidence, not baseRef by @trek-e in #3736
  • fix(#2845): stop the dimension parity guard counting a back-reference by @trek-e in #3752
  • fix(#3613): copy component dirs into the plugin-validate fixture by @behruznassre in #3627
  • fix(#3003): opt-in mechanism for intentional deletions in worktree.cleanup-wave by @trek-e in #3757
  • fix(#3762): enforce docs/INVENTORY.md roster rows, backfill 32 gaps by @trek-e in #3766
  • fix(#3760): refuse a legacy-key migration into a non-object config section by @trek-e in #3767
  • fix(#3007): resolve Codex reasoning effort per model and make every clamp visible by @trek-e in #3765
  • fix(#3712): confine in-process installs to a sandboxed HOME by @behruznassre in #3725
  • fix(#3299): tracer feedback gate honors workflow.human_verify_mode by @behruznassre in #3390
  • fix(#3662): resolve managed hook node runners at hook-fire time by @trek-e in #3790
  • fix(#3663): fold path casing only on win32 in the w027 active-worktree check by @trek-e in #3793
  • fix(#3664): warn when config-dir targets a foreign-agent destination by @trek-e in #3794
  • fix(#3679): gate pr-branch verify on planning-tree deletions by @trek-e in #3803
  • fix(#3683): wire gated learnings extraction into completion, align copy path by @trek-e in #3810
  • fix(#3684): resume verified-unmarked phases at update_roadmap by @trek-e in #3814
  • fix(#3809): route runtime-loaded markdown through the gsd_run launcher by @trek-e in #3815
  • fix(#3078): sweep all-spent ack fragments on next, name the collision remedy by @trek-e in #3823
  • fix(#3689): refuse a ledger write when the rendered table disagrees with its JSON by @trek-e in #3828
  • fix(#3685): report phase-complete write flags from the transaction, not the filesystem by @trek-e in #3826
  • fix(#3691): let every reviewer lane take a prompt cap, and make the documented global resolve by @trek-e in #3832
  • fix(#3696): report the last_activity invariant and make the verdict gateable with --strict by @trek-e in #3844
  • fix(#3699): report why a derived frontmatter key was not written, and repair a missing body source by @trek-e in #3846
  • fix(#3842): stage the emitted-drift-ack sweep so it does not conflict in-flight PRs by @trek-e in #3847
  • fix(#3840): reject a malformed feature order instead of coercing it by @trek-e in #3851
  • fix(#3701): resolve next_phase from the roadmap, selecting the numerically lowest successor by @trek-e in #3852
  • fix(#3704): rewrite fnm versioned node paths to the stable alias on macOS and Linux by @trek-e in #3856
  • fix(#3842): recover ack paths from pull requests past the per-PR file cap by @trek-e in #3857
  • fix(#3841): make the identity classifier and the launcher preamble agree by @trek-e in #3855
  • fix(#3705): consult model_policy in the install-time bake so agent frontmatter matches dispatch by @trek-e in #3863
  • fix(#3706): deliver the resolved reasoning effort to OpenCode subagents by @trek-e in #3867
  • fix(#3707): surface UAT rows audit-uat silently dropped, and never report a clean result for a file it could not read by @trek-e in #3887
  • fix(#3714): deliver an explicitly pinned model to the Codex worktree executor, and drop an unusable one by @trek-e in #3891
  • fix(#3707): degrade the fold for every UAT gap class, and stop line endings hiding rows from the audit and the acceptance gate by @trek-e in #3903
  • fix(#3719): restore @-includes on the agents emit path, so global Claude installs load their guidance by @trek-e in #3918
  • fix(#3738): antigravity global skills/agents install to ~/.gemini/config by @trek-e in #3921
  • fix(#3734): backlog sentinels no longer create phase branches in query commit by @trek-e in #3933
  • fix(#3729): hoist the .planning and CI gates above the graphify hook's node parse by @trek-e in #3935
  • fix(#3737): fold the use_worktrees opt-out into the dispatch-isolation sentinel by @trek-e in #3938
  • fix(#3740): ack writer searches the exact status-field shape the reader parses by @trek-e in #3940
  • fix(#3741): anchor the loose plan-scan fallback's PLAN token by @trek-e in #3950
  • fix(#3742): path-shaped comment channel keys and post-restore propagation by @trek-e in #3952
  • fix(#3749): route migrate-config, project_exists, and health repairs through the project-aware resolver by @trek-e in #3955
  • fix(#3763): pass --raw at every shipped config-get bash call site by @trek-e in #3961
  • fix(#1875): route installer settings/defaults writes through atomic, lock-guarded primitives by @trek-e in #3966
  • fix(#3963): inherit the root worktree opt-out under GSD_WORKSTREAM by @trek-e in #3967
  • fix(#3972): one worktreesOptedOut ladder in planning-workspace, shared by resolver and guard by @trek-e in #3979
  • fix(#3964): route init's waiting-signal, codebase, and skill-manifest paths through the project-aware resolver by @trek-e in #3971
  • fix(#3775): ack matches exactly the status-line case shapes the reader reads back by @trek-e in #3989
  • fix(#3985): stop racing spawnSync's documented timeout boundary in row 24 by @trek-e in #3988
  • fix(#3781): span-carrying heading walk unblocks acknowledge on heading-shaped deferred items by @trek-e in #3998
  • fix(#3782): segment verification debt by the archived_milestone stamp in progress step 1.6 by @trek-e in #4001
  • fix(#3786): authorize mutable scope from live observation only in the quick planner by @trek-e in #4005
  • fix(#3795): read the interrupted agent id before clearing the stale marker by @trek-e in #4006
  • fix(#3796): write the audit report to the single-version filename every reader expects by @trek-e in #4007
  • fix(#3797): make the roadmapper's role, output, and checklist match its write-first execution flow by @trek-e in #4008
  • fix(#3798): the profile closure follows command references into workflow spawn surfaces by @trek-e in #4009
  • fix(#3799): scope legacy cleanup to the install's resolved config dir and add --no-legacy-cleanup by @trek-e in #4013
  • fix(#3812): document how Current Position actually resolves a duplicate field by @trek-e in #4017
  • fix(#3801): register inline_plan_threshold in the defaults manifest and correct the docs by @trek-e in #4019
  • fix(#3804): audit-uat enumerates all three phase-archive layouts by @trek-e in #4022
  • fix(#3805): audit-uat honours the audit_acknowledged marker via the shared predicate by @trek-e in #4025
  • fix(#3807): advance-plan refuses an ambiguous multi-Phase Current Position by @trek-e in #4028
  • fix(#4012): a killed test chunk now names the file that was hanging by @trek-e in #4015
  • fix(#3817): count the truncation remainder — display truncates, counting must not by @trek-e in #4034
  • fix(#3827): new-mode routing gate — classify approval no longer authorizes scaffold writes by @trek-e in #4037
  • fix(#3839): hook tables say PreToolUse (validate-commit) and SessionStart (session-state) by @trek-e in #4041
  • fix(#3849): phase allocation counts numbers held by sibling git worktrees by @trek-e in #4042
  • fix(#3886): git commit timeout reported as commit_timeout; stale lock surfaced; 30s band by @trek-e in #4046
  • fix(#3894): quick path honors workflow.research_before_questions; key resolves from global defaults by @trek-e in #4047
  • fix(#3895): delete the mempalace-curator's model frontmatter pin — the fleet's only hardcoded model by @trek-e in #4048
  • fix(#3854): write normalization preserves tight multi-line lists by @trek-e in #4049
  • fix(#3860): Quick Tasks lookup accepts milestone-suffixed headings; schema-aware section selection by @trek-e in #4050
  • fix(#3864): smart-entry classify() matches the verif* status stem by @trek-e in #4052
  • fix(#3865): init.* phase queries accept --phase as the positional alias by @trek-e in #4054
  • fix(#3898): a separator-shaped line in ## Gaps is skipped, not made an entry by @trek-e in #4057
  • fix(#3726)!: require --confirm before milestone complete mutates by @0xdhx in #3774
  • fix(#3900): overlay walker skips non-regular files — a repo-root socket no longer fails 32 tests by @trek-e in #4062
  • fix(#4058): raise MAX_ACK_TRAILERS from 64 to 128 by @trek-e in #4059
  • fix(#3902): packaging guard resolves npm 12's pack --json shape — stays armed on Node 26 by @trek-e in #4064
  • fix(#3901): commit-docs-guard suites isolate children from a global core.hooksPath by @trek-e in #4063
  • fix(#4060): drive repo-baseline lint check in-process, not via a subprocess timeout race by @trek-e in #4065
  • fix(#4068): add --merge-async to c8 coverage-merge invocations by @trek-e in #4069

Full Changelog: v1.11.0...v1.12.0