Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/upstream-sync-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ jobs:
"### Action" \
"1. Create a sync branch: \`git checkout -b sync/upstream-${LATEST} main-speck\`" \
"2. Merge: \`git merge ${LATEST}\`" \
"3. Resolve conflicts, preserve fork agents (agy, bob, iflow, kimi, hermes, cline)." \
"3. Resolve conflicts, preserve fork agents (agy, bob, kimi, hermes, cline)." \
"4. Run \`uv run pytest tests/integrations/ -x -q\`." \
"5. Open PR to \`main-speck\`; tag \`satware-${LATEST}+1\` after merge." \
"" \
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/upstream-tag-regression.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ jobs:
if: steps.pytest.outputs.exit_code != '0'
run: |
set -euo pipefail
FORK_AGENTS="agy bob iflow kimi hermes cline"
FORK_AGENTS="agy bob kimi hermes cline"
BROKEN=""
for a in $FORK_AGENTS; do
if grep -qE "test_integration_${a}\b|integrations/${a}/" pytest.out; then
Expand Down
24 changes: 13 additions & 11 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -486,31 +486,33 @@ internal satware AG `wiki` repository (`specs/rfc-interproject-agentic-developme
|-------|-------------|-----------------------|
| L1 | `AGENTS.md` + `specs/metadata.json` with upstream/downstream graph | This file + `specs/metadata.json` |
| L2 | Privacy validation in CI | `scripts/bash/check-privacy-leaks.sh`, `.privacy-whitelist`, `.github/workflows/privacy-check.yml` |
| L3 | Automated upstream sync + morning protocol integration | `scripts/bash/check-upstream-sync.sh`, `.github/workflows/upstream-sync-check.yml`, `scripts/bash/sod.sh`, `scripts/bash/eod.sh`, `scripts/daily-routine.sh`, Cline `sod.protocol.md` / `eod.protocol.md` |
| L3 | Automated upstream sync + morning protocol integration | `scripts/bash/check-upstream-sync.sh`, `.github/workflows/upstream-sync-check.yml`, `scripts/bash/sod.sh`, `scripts/bash/eod.sh`, `scripts/daily-routine.sh`, `$SATWARE_HARNESS/workflows/sod.protocol.md` / `eod.protocol.md` |

### Harmony with `~/Documents/Cline`
### Harmony with the satware harness (`$SATWARE_HARNESS`)

Agents working on this repository MUST follow the global satware AG agent rules
distributed via the Cline command center. The canonical source of truth is
`~/Documents/Cline/Rules/`, synchronized into consumer projects via
`~/Documents/Cline/scripts/env-setup-symlinks.sh`.
distributed via the harness. The canonical source of truth is
`$SATWARE_HARNESS/rules/`, synchronized into consumer projects via
`$SATWARE_HARNESS/scripts/env-setup-symlinks.sh`. The `SATWARE_HARNESS`
environment variable is exported by `scripts/prepare-env.sh` (run once after
cloning the harness) and persisted to `~/.config/satware/harness.env`.

Key rules that govern SDD/TDD and day-to-day behavior on spec-kit:

- `methodology.core.md` — core SDD/TDD/RLM methodology
- `methodology.rlm.md` — Reasoning, Learning, Memory loop
- `code.quality.md` — code quality bar, reviews, refactoring
- `git.standards.md` — commit conventions, branch model, PR hygiene
- `context.management.md` — git-native context and zero-persistence memory
- `docs.markdown.md` — markdown + frontmatter rules
- `agent.framework.md`, `agent.guardrails.md` — operational framework and guardrails
- `ecosystem.ipadp.md` — IPADP conformance (this is IPADP project #6)
- `release.immutability.md` — tag immutability (governs upstream-sync workflow)
- `code.cross-platform.md` — cross-platform discipline (shell/powershell paths, encodings)

### Morning / EoD Protocol Integration

At the start of every working session an agent working on this repository SHOULD:

1. Run the repo-local SoD hook: `bash scripts/daily-routine.sh sod` (references harness `~/internal/harness/workflows/sod.protocol.md` when available, then runs `check-privacy-leaks.sh` and `check-upstream-sync.sh`).
2. At the end of the session, run the repo-local EoD hook: `bash scripts/daily-routine.sh eod` (references harness `~/internal/harness/workflows/eod.protocol.md` when available, then runs `check-privacy-leaks.sh`).
1. Run the repo-local SoD hook: `bash scripts/daily-routine.sh sod` (references `$SATWARE_HARNESS/workflows/sod.protocol.md` when available, then runs `check-privacy-leaks.sh` and `check-upstream-sync.sh`).
2. At the end of the session, run the repo-local EoD hook: `bash scripts/daily-routine.sh eod` (references `$SATWARE_HARNESS/workflows/eod.protocol.md` when available, then runs `check-privacy-leaks.sh`).

In CI, `.github/workflows/upstream-sync-check.yml` runs `scripts/bash/check-upstream-sync.sh` on a daily schedule and opens/updates a rolling `upstream-sync: <tag> available` issue when a new upstream `github/spec-kit` release tag is detected.

Expand All @@ -528,7 +530,7 @@ See `docs/fork-agent-parity.md` for the fork-agent parity audit (IPADP Phase 4.3
6. **Checklists** — fulfill `templates/checklist-template.md` prior to merge.
7. **Privacy + upstream sync** — verify via the two scripts above.
8. **Pre-PR check** — run `bash scripts/daily-routine.sh pre-pr` before pushing to catch lint/test failures locally. Runs ruff, integration tests, privacy check, and upstream sync in a single pass.
9. **Commit + PR** — follow `git.standards.md` (conventional commits, signed trailers where required).
9. **Commit + PR** — follow conventional commits (`<type>(<scope>): <msg>`) with signed trailers where required.

---

Expand Down
6 changes: 3 additions & 3 deletions llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,6 @@ It is IPADP project #6 in the satware AG ecosystem.
## IPADP

- RFC: `specs/rfc-interproject-agentic-development.md` in the internal satware AG `wiki` repository
- Morning protocol (SoD): `~/Documents/Cline/Workflows/sod.protocol.md`
- EoD protocol: `~/Documents/Cline/Workflows/eod.protocol.md`
- Global agent rules: `~/Documents/Cline/Rules/`
- Morning protocol (SoD): `$SATWARE_HARNESS/workflows/sod.protocol.md`
- EoD protocol: `$SATWARE_HARNESS/workflows/eod.protocol.md`
- Global agent rules: `$SATWARE_HARNESS/rules/`
24 changes: 12 additions & 12 deletions specs/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
"harness": {
"forge": "gitea",
"visibility": "private",
"local_path": "~/internal/harness",
"local_path": "$SATWARE_HARNESS",
"role": "consumes SDD methodology + templates"
},
"wiki": {
Expand All @@ -41,15 +41,15 @@
"role": "transitive consumer via harness"
}
},
"custom_integrations": [],
"custom_integrations": ["agy", "bob", "cline", "hermes", "kimi"],
"privacy": {
"validator": "scripts/bash/check-privacy-leaks.sh",
"whitelist": ".privacy-whitelist",
"ci_workflow": ".github/workflows/privacy-check.yml"
},
"morning_protocol": {
"source": "~/internal/harness/workflows/sod.protocol.md",
"eod_source": "~/internal/harness/workflows/eod.protocol.md",
"source": "$SATWARE_HARNESS/workflows/sod.protocol.md",
"eod_source": "$SATWARE_HARNESS/workflows/eod.protocol.md",
"upstream_sync_check": "scripts/bash/check-upstream-sync.sh",
"sod_hook": "scripts/bash/sod.sh",
"eod_hook": "scripts/bash/eod.sh",
Expand All @@ -58,17 +58,17 @@
"docs": "docs/ipadp-l3-automation.md"
},
"cline_harmony": {
"rules_source": "~/internal/harness/rules",
"rules_source": "$SATWARE_HARNESS/rules",
"key_rules": [
"methodology.core.md",
"methodology.rlm.md",
"agent.framework.md",
"agent.guardrails.md",
"code.cross-platform.md",
"code.quality.md",
"git.standards.md",
"context.management.md",
"docs.markdown.md",
"agent.framework.md",
"agent.guardrails.md"
"ecosystem.ipadp.md",
"methodology.core.md",
"release.immutability.md"
],
"symlink_script": "~/internal/harness/scripts/env-setup-symlinks.sh"
"symlink_script": "$SATWARE_HARNESS/scripts/env-setup-symlinks.sh"
}
}
33 changes: 17 additions & 16 deletions specs/upstream-release-sync-strategy/spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,23 @@ This fork (`satwareAG/spec-kit`) adds proprietary agent integrations (cline, her

| Item | Value |
|------|-------|
| Fork version | 0.7.2 (matches upstream release tag `v0.7.2`) |
| Upstream main | 0.7.3.dev0 (unreleased development) |
| Custom files | 10 files: cline integration, hermes integration, shared scripts |
| Upstream drift | 3 commits ahead of `v0.7.2` tag (all dev-phase, no release) |
| Fork version | 0.12.17 (matches upstream release tag `v0.12.17`) |
| Upstream main | 0.12.18.dev0 (unreleased development) |
| Custom integrations | 5 fork agents: agy, bob, cline, hermes, kimi |
| Sync status | Up to date with `v0.12.17` (merged 2026-07-17) |

### Custom Fork Additions (must survive sync)

| File | Purpose |
|------|---------|
| `src/specify_cli/integrations/agy/` | AGY agent integration |
| `src/specify_cli/integrations/bob/` | Bob agent integration |
| `src/specify_cli/integrations/cline/` | Cline agent integration |
| `src/specify_cli/integrations/hermes/` | Hermes agent integration |
| `src/specify_cli/integrations/__init__.py` | Modified to register cline/hermes |
| `scripts/bash/update-agent-context.sh` | Modified to include cline/hermes |
| `scripts/powershell/update-agent-context.ps1` | Modified to include cline/hermes |
| `CHANGELOG.md` | Fork-specific changelog |
| `src/specify_cli/integrations/kimi/` | Kimi agent integration |
| `src/specify_cli/integrations/__init__.py` | Modified to register all 5 fork agents |
| `pyproject.toml` | Version bumped with fork additions |
| `CHANGELOG.md` | Fork-specific changelog |

## User Scenarios & Testing

Expand All @@ -38,7 +39,7 @@ As a maintainer, when upstream publishes a new release tag (e.g., `v0.7.3`), I c

**Why this priority**: Core workflow - without clean sync, fork drifts and becomes unmaintainable.

**Independent Test**: Checkout fork, merge upstream tag `v0.7.3`, run test suite, verify cline/hermes integrations still registered and functional.
**Independent Test**: Checkout fork, merge upstream tag `v0.7.3`, run test suite, verify agy, bob, cline, hermes, kimi integrations still registered and functional.

### User Story 2 - Skip Unreleased Development Commits (Priority: P1)

Expand All @@ -54,15 +55,15 @@ As a maintainer, when upstream modifies shared files (e.g., `integrations/__init

**Why this priority**: Conflict resolution is the highest-risk operation; documented procedure prevents accidental loss.

**Independent Test**: Simulate conflict by cherry-picking an upstream commit touching `__init__.py`, resolve using procedure, verify both upstream and custom integrations registered.
**Independent Test**: Simulate conflict by cherry-picking an upstream commit touching `__init__.py`, resolve using procedure, verify both upstream and all 5 fork integrations registered.

### User Story 4 - Validate Fork Integrity After Sync (Priority: P2)

As a maintainer, after syncing to a new release, I can run a validation procedure that confirms fork integrity: correct version, all integrations registered, all tests passing.

**Why this priority**: Quality gate - catches sync issues before push.

**Independent Test**: Run validation script, confirm all checks pass (version matches tag, `specify --help` lists cline/hermes, tests green).
**Independent Test**: Run validation script, confirm all checks pass (version matches tag, `specify --help` lists agy, bob, cline, hermes, kimi, tests green).

### User Story 5 - Automated Sync Detection (Priority: P3)

Expand Down Expand Up @@ -94,7 +95,7 @@ After sync, the full test suite (`pytest tests/`) MUST pass with 0 failures.

### FR-005: Conflict Resolution Procedure

A documented procedure MUST exist for resolving conflicts in shared files (`integrations/__init__.py`, `update-agent-context.sh/ps1`) that preserves both upstream additions and custom registrations.
A documented procedure MUST exist for resolving conflicts in shared files (`integrations/__init__.py`) that preserves both upstream additions and the 5 custom fork agent registrations (agy, bob, cline, hermes, kimi).

### FR-006: IPADP Conformance

Expand All @@ -112,9 +113,9 @@ The fork MUST maintain `AGENTS.md`, `specs/metadata.json` with upstream/downstre
|----------|-------------|
| Sync completes cleanly | Merge of upstream tag produces no unresolved conflicts or at most documented resolution steps |
| All tests pass | `pytest tests/` returns 0 failures |
| Integrations functional | `specify init --help` lists cline and hermes as available integrations |
| Integrations functional | `specify init --help` lists agy, bob, cline, hermes, kimi as available integrations |
| Version correct | `pyproject.toml` version matches merged tag |
| No custom code lost | `git diff` shows cline/hermes files intact post-merge |
| No custom code lost | `git diff` shows all 5 fork agent directories intact post-merge |

## Sync Procedure (Reference Implementation)

Expand All @@ -132,8 +133,8 @@ git merge-base --is-ancestor $LATEST_TAG HEAD && echo "Already merged" && exit 0
git merge $LATEST_TAG --no-edit

# 5. Resolve conflicts in shared files if any
# - integrations/__init__.py: keep both upstream registrations AND custom cline/hermes
# - update-agent-context.sh/ps1: keep both upstream agents AND cline/hermes cases
# - integrations/__init__.py: keep both upstream registrations AND all 5 fork agents
# (agy, bob, cline, hermes, kimi)

# 6. Update version in pyproject.toml to match tag

Expand Down
Loading