Skip to content

sync: merge upstream/main (v1.3.1 + workspace foundation)#12

Open
stanleykao72 wants to merge 22 commits intomainfrom
sync/upstream-v1.3.1
Open

sync: merge upstream/main (v1.3.1 + workspace foundation)#12
stanleykao72 wants to merge 22 commits intomainfrom
sync/upstream-v1.3.1

Conversation

@stanleykao72
Copy link
Copy Markdown
Owner

@stanleykao72 stanleykao72 commented May 4, 2026

Summary

Merges upstream/main (Fission-AI/OpenSpec) into fork main, picking up:

Total upstream commits: 20. After merge, fork is 22 ahead of fork/main (20 upstream + 1 merge + 1 follow-up fix), 0 behind.

Conflict Resolution

9 files conflicted, 32 hunks total. 4 files had real semantic decisions:

File Resolution
src/commands/workflow/instructions.ts Take upstream — fork's inline path.join(getChangesDir(...)) was redundant after loadChangeContext() refactor. Removed unused import.
src/commands/workflow/templates.ts Keep both imports (getLoadedPlugins from fork plugin system + FileSystemUtils from upstream canonical path work).
src/core/artifact-graph/instruction-loader.ts Nest fork's configurable getChangesDir() inside upstream's canonicalizeExistingPath() — preserves both behaviors.
src/core/profiles.ts CORE_WORKFLOWS = union of both sides: ['propose', 'explore', 'apply', 'verify', 'sync', 'archive']. Fork added verify, upstream added sync for workspace path. Both now default-active.

Remaining 28 hunks across 5 test files were mechanical: applying the 6-entry CORE list to fixture expectations.

Follow-up Fix

The CORE_WORKFLOWS union broke 1 test (config-profile.test.ts:347): the addExtraVerifyWorkflowArtifacts helper was designed to add a non-core workflow to trigger a warning, but verify is now in core. Renamed to addExtraNonCoreWorkflowArtifacts and switched to openspec-new-change (in ALL_WORKFLOWS but not CORE_WORKFLOWS). Commit: bbee45c.

Test Plan

  • pnpm install — clean
  • pnpm test1719/1719 pass
  • pnpm build — TypeScript compiles
  • pnpm lint — no warnings
  • node bin/openspec.js validate --all --strict — 51 pass / 7 fail; the 7 failures are pre-existing in upstream/main (PR [codex] Archive workspace foundation Fission-AI/OpenSpec#1045 itself notes this) and affect upstream's own active changes, not fork content

Smoke Tests on Real Production Content

Beyond unit tests, ran the merged CLI against live fork-daily-driver content (Odoo 18 EE project, custom changesDir pointing to Obsidian vault, plugin-bundled odoo-sdd schema):

# Scenario Result
1 validate against real changes (mix of spec-driven, odoo-sdd, odoo-trivial schemas with custom changesDir) ✅ schemas resolve, paths canonical-ize, content errors are pre-existing
2 init --profile core produces 6-entry CORE verify AND sync skills + commands both generated
3 Custom changesDir: ./custom-changes lookup ✅ nested canonicalizeExistingPath(getChangesDir(...)) resolves correctly
4 instructions apply on odoo-sdd plugin schema ✅ 175-line output, schema correctly identified, context paths resolved, [domain: ...] tags preserved
5 update regenerates corrupted skill ✅ md5 matches before/after, respects user global config
6 --teams / --sequential orchestration flags ✅ fork-only orchestration system intact

⚠️ Behavioral Note for Existing Fork Users

Upstream added sync to default CORE_WORKFLOWS. After this merge, fork's CORE is the union: ['propose', 'explore', 'apply', 'verify', 'sync', 'archive'].

If your global config (~/.config/openspec/config.json) was set before this merge, it likely still has the old 5-entry workflows list (no sync). Running openspec update in any project will remove openspec-sync-specs skill + sync.md command because user config takes precedence over default CORE.

To opt into the new 6-entry default after pulling this merge, do one of:

  1. Run openspec config profile, reselect core — picks up the new 6-entry default
  2. Manually add "sync" to the workflows array in ~/.config/openspec/config.json
  3. Stay on 5-entry custom (no sync) — fully supported, just means your projects won't get the workspace sync skill installed

This is intended behavior (user config respected), not a regression — but it's surprising enough to flag here.

Implications for Upstream Contribution Strategy

workspace-foundation overlaps with our planned T2/T4 PRs. Strategy revision tracked in openspec/changes/upstream-contribution/ (separate commit on main).

🤖 Generated with Claude Code

alfred-openspec and others added 22 commits April 13, 2026 12:20
* docs: split workspace initiatives from repo-local changes

* docs: align roadmap and explore ux with initiatives
…ission-AI#990)

* fix: handle XDG_CONFIG_HOME and %APPDATA% in telemetry config path

* fix: migrate telemetry config to resolved path

* fix: address telemetry config review feedback

---------

Co-authored-by: TabishB <tabishbidiwale@gmail.com>
* fix: escape glob-special chars in directory paths (Fission-AI#974)

Parentheses and square brackets in project directory paths broke
fast-glob matching, causing glob-based artifact outputs to silently
return empty results. Escape these characters in the directory portion
before passing to fast-glob, preserving glob semantics in the generates
pattern.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: use cwd for artifact output globs

---------

Co-authored-by: furao <furao@didiglobal.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Tabish Bidiwale <30385142+TabishB@users.noreply.github.com>
Co-authored-by: TabishB <tabishbidiwale@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* feat: add Kimi CLI skills-only support

* test: relax Kimi adapterless log assertion
* docs: propose workspace reimplementation slices

* docs: add workspace reimplementation roadmap readme

* docs: add workspace poc reference guide

* docs: add workspace reimplementation entrypoint
* docs: sync tool ID lists with AI_TOOLS source of truth

Fixes missing tool IDs in docs/cli.md and docs/supported-tools.md that
drifted from src/core/config.ts (AI_TOOLS).

- docs/cli.md: add bob, forgecode, junie, lingma (25 -> 29)
- docs/supported-tools.md: add lingma, align order with config.ts (28 -> 29)

Follow-up to Fission-AI#1003.

* docs: address AICR feedback on tool ID ordering and table entry

Address review comments from Copilot and CodeRabbit on PR Fission-AI#1027:

- docs/cli.md: reorder lingma to match AI_TOOLS position (between qoder and qwen)
- docs/supported-tools.md: same reordering in the --tools list
- docs/supported-tools.md: add missing Lingma row to Tool Directory Reference
  table (inserted alphabetically between Kiro and OpenCode, matching existing
  table convention)

Verified all three documentation surfaces against AI_TOOLS (29 tools):
- cli.md list: order matches src/core/config.ts
- supported-tools.md list: order matches src/core/config.ts
- supported-tools.md table: set equals AI_TOOLS (alphabetical-by-display-name
  order preserved per existing convention).
* Include sync in core workflow defaults

* Add old core custom profile sync hint

* Update workflows sync default docs
* fix: make requirement header parsing case-insensitive

* fix: add tests and cover the rest of requirement header places
* docs: define workspace foundation and setup specs

* Complete workspace foundation

* Document workspace beta status

* Address workspace PR review comments
Adds a "Community Schemas" section to docs/customization.md cataloging
community-maintained schema bundles distributed via standalone
repositories. Modeled after github/spec-kit's community extension
catalog (https://github.com/github/spec-kit/tree/main/extensions).

The first entry is `superpowers-bridge` from JiangWay/openspec-schemas
— born from the proposal in PR Fission-AI#970 and now maintained externally.

Also adds a brief 4-line "Community schemas" introductory section in
README.md (between Docs and Why OpenSpec) pointing readers to the
catalog. Documentation only; no code or schema changes.

Refs: Fission-AI#970

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…m-v1.3.1

Resolves CORE_WORKFLOWS to union both verify (fork) and sync (upstream).
Nests fork's getChangesDir() inside upstream's canonicalizeExistingPath().
Mechanically applies 6-entry CORE list to test fixtures.

Constraint: fork has v1.3.0 base + 26 commits ahead, upstream landed workspace foundation
Rejected: rebase (linear history) | 26 commit replay would hit same conflict each time
Confidence: medium
Scope-risk: moderate
Reversibility: clean (merge commit, can revert)
Tested: pnpm install + test + build + validate (Stage 12 follow-up)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…WS union

After merging upstream/main, CORE_WORKFLOWS now contains both verify and
sync. The 'extra workflow' test scenario (project has artifacts beyond
configured workflows) needed a workflow that's truly non-core. Switched
helper from openspec-verify-change/verify.md to openspec-new-change/new.md
since 'new' is in ALL_WORKFLOWS but not CORE_WORKFLOWS.

Constraint: warning test requires a non-core workflow artifact to trigger
Tested: pnpm test test/commands/config-profile.test.ts → 18/18 pass
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants