@pareto4/pp-core 1.8.1 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/NOTICE +23 -0
- package/README.md +10 -1
- package/bin/install.js +34 -1
- package/gemini-extension.json +1 -1
- package/package.json +8 -3
- package/pareto-skills/pp-project-setup/SKILL.md +32 -440
- package/pp-core/bin/lib/capability-state.cjs +13 -7
- package/pp-core/bin/lib/config.cjs +7 -22
- package/pp-core/bin/lib/init.cjs +4 -4
- package/pp-core/bin/lib/installer-migration-report.cjs +1 -1
- package/pp-core/bin/lib/loop-resolver.cjs +6 -0
- package/pp-core/bin/lib/profile-output.cjs +4 -2
- package/pp-core/bin/lib/runtime-name-policy.cjs +0 -1
- package/pp-core/bin/lib/surface.cjs +2 -2
- package/pp-core/bin/shared/config-schema.manifest.json +4 -0
- package/pp-core/references/workstream-flag.md +13 -0
- package/pp-core/workflows/discovery-sprint.md +409 -16
- package/pp-core/workflows/discovery-to-build/steps/architecture-deliverables.md +250 -0
- package/pp-core/workflows/discovery-to-build.md +218 -48
- package/pp-core/workflows/discuss-phase/modes/chain.md +5 -0
- package/pp-core/workflows/discuss-phase.md +4 -0
- package/pp-core/workflows/execute-phase.md +4 -0
- package/pp-core/workflows/new-milestone.md +4 -0
- package/pp-core/workflows/plan-phase.md +4 -0
- package/pp-core/workflows/progress.md +4 -0
- package/pp-core/workflows/quick.md +4 -0
- package/pp-core/workflows/resume-project.md +4 -0
- package/pp-core/workflows/ship.md +4 -0
- package/pp-core/workflows/transition.md +4 -0
- package/pp-core/workflows/validate-phase.md +4 -0
- package/scripts/changeset/lint.cjs +20 -5
- package/scripts/lint-docs-required.cjs +10 -3
- package/scripts/release-channel.cjs +58 -0
- package/scripts/release-tarball-smoke.cjs +4 -0
- package/scripts/verify-opengsd-sweep.cjs +12 -0
- package/scripts/verify-rename-guard.cjs +333 -0
package/NOTICE
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
pp-core
|
|
2
|
+
=======
|
|
3
|
+
|
|
4
|
+
pp-core is based on gsd-core by Open GSD.
|
|
5
|
+
|
|
6
|
+
## Upstream Attribution
|
|
7
|
+
|
|
8
|
+
Copyright (c) 2026 Open GSD
|
|
9
|
+
|
|
10
|
+
gsd-core is licensed under the MIT License.
|
|
11
|
+
Source: https://github.com/open-gsd/gsd-core
|
|
12
|
+
npm package: @opengsd/gsd-core @ version 1.5.0
|
|
13
|
+
|
|
14
|
+
The full text of the MIT License is reproduced in the LICENSE file at the root of
|
|
15
|
+
this repository.
|
|
16
|
+
|
|
17
|
+
## Fork Information
|
|
18
|
+
|
|
19
|
+
pp-core is a hard fork of gsd-core v1.5.0, maintained by The Pareto Project.
|
|
20
|
+
It is not affiliated with or endorsed by OpenGSD.
|
|
21
|
+
|
|
22
|
+
pp-core diverges from gsd-core as of 2026-06-24. The Pareto Project develops and
|
|
23
|
+
maintains pp-core independently; no upstream merges from gsd-core are planned.
|
package/README.md
CHANGED
|
@@ -75,6 +75,9 @@ New here? Follow [Your first project](docs/tutorials/your-first-project.md) for
|
|
|
75
75
|
- [The phase loop](docs/explanation/the-phase-loop.md)
|
|
76
76
|
- [Architecture](docs/ARCHITECTURE.md)
|
|
77
77
|
|
|
78
|
+
**No lock-in** — pp-core never ships inside the app it helps you build:
|
|
79
|
+
- [Escape hatch](docs/ESCAPE-HATCH.md)
|
|
80
|
+
|
|
78
81
|
Full index: [docs/README.md](docs/README.md).
|
|
79
82
|
|
|
80
83
|
---
|
|
@@ -87,10 +90,16 @@ Troubleshooting? See [docs/how-to/recover-and-troubleshoot.md](docs/how-to/recov
|
|
|
87
90
|
|
|
88
91
|
---
|
|
89
92
|
|
|
90
|
-
## License
|
|
93
|
+
## License & Attribution
|
|
91
94
|
|
|
92
95
|
MIT License. See [LICENSE](LICENSE) for details.
|
|
93
96
|
|
|
97
|
+
pp-core is a hard fork of [gsd-core](https://github.com/open-gsd/gsd-core) by
|
|
98
|
+
Open GSD (MIT), rebranded and extended by The Pareto Project. The original
|
|
99
|
+
copyright and permission notice are preserved in [LICENSE](LICENSE), and
|
|
100
|
+
upstream attribution is recorded in [NOTICE](NOTICE) — both files ship in the
|
|
101
|
+
npm package and in every installed footprint.
|
|
102
|
+
|
|
94
103
|
---
|
|
95
104
|
|
|
96
105
|
<div align="center">
|
package/bin/install.js
CHANGED
|
@@ -7055,7 +7055,15 @@ function _removeGsdEntries(destDir, kind) {
|
|
|
7055
7055
|
return;
|
|
7056
7056
|
}
|
|
7057
7057
|
for (const entry of fs.readdirSync(destDir, { withFileTypes: true })) {
|
|
7058
|
-
|
|
7058
|
+
// Match both the current kind.prefix (now always 'pp-') AND the legacy
|
|
7059
|
+
// 'gsd-' prefix, so a reinstall also prunes stale pre-1.8.0 gsd-<stem>
|
|
7060
|
+
// directories left over from before the pp- rename (#3810/D-13/D-14).
|
|
7061
|
+
// `kind.prefix &&` guards against the empty-string prefix, which is
|
|
7062
|
+
// handled by the whole-namespace early-return above and never reaches
|
|
7063
|
+
// this loop today — defensive only.
|
|
7064
|
+
const matchesCurrentPrefix = kind.prefix && entry.name.startsWith(kind.prefix);
|
|
7065
|
+
const matchesLegacyPrefix = entry.name.startsWith('gsd-');
|
|
7066
|
+
if (!matchesCurrentPrefix && !matchesLegacyPrefix) continue;
|
|
7059
7067
|
fs.rmSync(path.join(destDir, entry.name), { recursive: true, force: true });
|
|
7060
7068
|
}
|
|
7061
7069
|
}
|
|
@@ -10434,6 +10442,31 @@ function install(isGlobal, runtime = 'claude', options = {}) {
|
|
|
10434
10442
|
}
|
|
10435
10443
|
}
|
|
10436
10444
|
|
|
10445
|
+
// Copy NOTICE (MIT attribution to upstream gsd-core) — the installed
|
|
10446
|
+
// footprint is a distributed copy, so the attribution must travel with it.
|
|
10447
|
+
const noticeSrc = path.join(src, 'NOTICE');
|
|
10448
|
+
const noticeDest = path.join(targetDir, 'pp-core', 'NOTICE');
|
|
10449
|
+
if (fs.existsSync(noticeSrc)) {
|
|
10450
|
+
fs.copyFileSync(noticeSrc, noticeDest);
|
|
10451
|
+
if (verifyFileInstalled(noticeDest, 'NOTICE')) {
|
|
10452
|
+
console.log(` ${green}✓${reset} Installed NOTICE`);
|
|
10453
|
+
} else {
|
|
10454
|
+
failures.push('NOTICE');
|
|
10455
|
+
}
|
|
10456
|
+
}
|
|
10457
|
+
|
|
10458
|
+
// Copy LICENSE alongside it for the same reason.
|
|
10459
|
+
const licenseSrc = path.join(src, 'LICENSE');
|
|
10460
|
+
const licenseDest = path.join(targetDir, 'pp-core', 'LICENSE');
|
|
10461
|
+
if (fs.existsSync(licenseSrc)) {
|
|
10462
|
+
fs.copyFileSync(licenseSrc, licenseDest);
|
|
10463
|
+
if (verifyFileInstalled(licenseDest, 'LICENSE')) {
|
|
10464
|
+
console.log(` ${green}✓${reset} Installed LICENSE`);
|
|
10465
|
+
} else {
|
|
10466
|
+
failures.push('LICENSE');
|
|
10467
|
+
}
|
|
10468
|
+
}
|
|
10469
|
+
|
|
10437
10470
|
// Write VERSION file
|
|
10438
10471
|
const versionDest = path.join(targetDir, 'pp-core', 'VERSION');
|
|
10439
10472
|
fs.writeFileSync(versionDest, pkg.version);
|
package/gemini-extension.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pp-core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0",
|
|
4
4
|
"description": "PP Core — a meta-prompting, context engineering, and spec-driven development system for AI coding agents. Loads pp-core's operating context into every Gemini CLI session.",
|
|
5
5
|
"contextFileName": "GEMINI.md"
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pareto4/pp-core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0",
|
|
4
4
|
"description": "Pareto pp-core — The Pareto Project's AI-assisted engineering framework: meta-prompting, context engineering, and spec-driven development for AI coding agents.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"pp-core": "bin/install.js",
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
"pp_run": "pp-core/bin/pp_run"
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
|
+
"LICENSE",
|
|
12
|
+
"NOTICE",
|
|
11
13
|
"bin",
|
|
12
14
|
"commands",
|
|
13
15
|
"pp-core",
|
|
@@ -50,7 +52,7 @@
|
|
|
50
52
|
"npm": ">=10.0.0"
|
|
51
53
|
},
|
|
52
54
|
"dependencies": {
|
|
53
|
-
"@anthropic-ai/claude-agent-sdk": "^0.
|
|
55
|
+
"@anthropic-ai/claude-agent-sdk": "^0.3.218",
|
|
54
56
|
"ws": "^8.21.0"
|
|
55
57
|
},
|
|
56
58
|
"devDependencies": {
|
|
@@ -68,7 +70,8 @@
|
|
|
68
70
|
"typescript-eslint": "^8.60.0"
|
|
69
71
|
},
|
|
70
72
|
"overrides": {
|
|
71
|
-
"qs": ">=6.15.2"
|
|
73
|
+
"qs": ">=6.15.2",
|
|
74
|
+
"@hono/node-server": ">=2.0.5"
|
|
72
75
|
},
|
|
73
76
|
"optionalDependencies": {
|
|
74
77
|
"fallow": "^2.70.0"
|
|
@@ -105,6 +108,8 @@
|
|
|
105
108
|
"lint:changeset": "node scripts/changeset/lint.cjs",
|
|
106
109
|
"lint:docs": "node scripts/lint-docs-required.cjs",
|
|
107
110
|
"lint:legacy-name": "node scripts/lint-legacy-dir-name.cjs",
|
|
111
|
+
"rename-guard": "node scripts/verify-rename-guard.cjs",
|
|
112
|
+
"rename-guard:baseline": "node scripts/verify-rename-guard.cjs --update-baseline",
|
|
108
113
|
"ci:test-scope": "node scripts/ci-test-scope.cjs",
|
|
109
114
|
"size:baseline": "node scripts/update-size-baseline.cjs",
|
|
110
115
|
"changeset": "node scripts/changeset/new.cjs",
|