pumuki 6.3.167 → 6.3.169
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/CHANGELOG.md +12 -0
- package/integrations/git/stageRunners.ts +20 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,18 @@ This project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [6.3.169] - 2026-05-06
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- **Tracked evidence working-tree hygiene:** successful `pumuki-pre-commit` now restores tracked `.ai_evidence.json` from `HEAD` when the file was not staged at hook start, preventing pre-commit frameworks from failing with “files were modified by this hook” while still excluding evidence from code commits.
|
|
14
|
+
|
|
15
|
+
## [6.3.168] - 2026-05-06
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- **Tracked evidence commit hygiene:** `pumuki-pre-commit` now respects tracked `.ai_evidence.json` when it was not staged by the developer before a successful code commit. Documentation-only commits still restore evidence drift, and `PUMUKI_PRE_COMMIT_ALWAYS_RESTAGE_TRACKED_EVIDENCE=1` preserves the previous forced restage behavior.
|
|
20
|
+
|
|
9
21
|
## [6.3.167] - 2026-05-06
|
|
10
22
|
|
|
11
23
|
### Fixed
|
|
@@ -77,6 +77,9 @@ const shouldSkipRestagingTrackedEvidenceForDocumentationOnlyScope = (params: {
|
|
|
77
77
|
return paths.every(isDocumentationOnlyStagedPath);
|
|
78
78
|
};
|
|
79
79
|
|
|
80
|
+
const hasStagedEvidencePath = (paths: ReadonlyArray<string>): boolean =>
|
|
81
|
+
paths.some((path) => path === '.ai_evidence.json' || path === '.AI_EVIDENCE.json');
|
|
82
|
+
|
|
80
83
|
const PRE_COMMIT_EVIDENCE_MAX_AGE_SECONDS = 900;
|
|
81
84
|
const PRE_PUSH_EVIDENCE_MAX_AGE_SECONDS = 1800;
|
|
82
85
|
const HOOK_GATE_PROGRESS_REMINDER_MS = 2000;
|
|
@@ -520,6 +523,7 @@ const syncTrackedEvidenceAfterSuccessfulPreCommit = (params: {
|
|
|
520
523
|
dependencies: StageRunnerDependencies;
|
|
521
524
|
repoRoot: string;
|
|
522
525
|
gateBlocked: boolean;
|
|
526
|
+
evidenceWasStagedAtStart: boolean;
|
|
523
527
|
}): boolean => {
|
|
524
528
|
const evidenceAbsolutePath = join(params.repoRoot, EVIDENCE_FILE_PATH);
|
|
525
529
|
if (!existsSync(evidenceAbsolutePath)) {
|
|
@@ -543,6 +547,20 @@ const syncTrackedEvidenceAfterSuccessfulPreCommit = (params: {
|
|
|
543
547
|
params.dependencies.restorePathFromHead(params.repoRoot, EVIDENCE_FILE_PATH);
|
|
544
548
|
return false;
|
|
545
549
|
}
|
|
550
|
+
if (
|
|
551
|
+
!params.gateBlocked &&
|
|
552
|
+
!params.evidenceWasStagedAtStart &&
|
|
553
|
+
!isTruthyEnvFlag(process.env.PUMUKI_PRE_COMMIT_ALWAYS_RESTAGE_TRACKED_EVIDENCE)
|
|
554
|
+
) {
|
|
555
|
+
if (!params.dependencies.isQuietMode()) {
|
|
556
|
+
process.stderr.write(
|
|
557
|
+
`[pumuki][evidence-sync] tracked ${EVIDENCE_FILE_PATH} restored because it was not staged before PRE_COMMIT. ` +
|
|
558
|
+
`Force previous behavior: PUMUKI_PRE_COMMIT_ALWAYS_RESTAGE_TRACKED_EVIDENCE=1\n`
|
|
559
|
+
);
|
|
560
|
+
}
|
|
561
|
+
params.dependencies.restorePathFromHead(params.repoRoot, EVIDENCE_FILE_PATH);
|
|
562
|
+
return false;
|
|
563
|
+
}
|
|
546
564
|
try {
|
|
547
565
|
params.dependencies.stagePath(params.repoRoot, EVIDENCE_FILE_PATH);
|
|
548
566
|
return false;
|
|
@@ -787,6 +805,7 @@ export async function runPreCommitStage(
|
|
|
787
805
|
const activeDependencies = getDependencies(dependencies);
|
|
788
806
|
const repoRoot = activeDependencies.resolveRepoRoot();
|
|
789
807
|
const manifestSnapshot = captureManifestGuardSnapshot(repoRoot);
|
|
808
|
+
const initiallyStagedPaths = activeDependencies.listStagedIndexPaths(repoRoot);
|
|
790
809
|
activeDependencies.ensureRuntimeArtifactsIgnored(repoRoot);
|
|
791
810
|
if (
|
|
792
811
|
enforceGitAtomicityGate({
|
|
@@ -820,6 +839,7 @@ export async function runPreCommitStage(
|
|
|
820
839
|
dependencies: activeDependencies,
|
|
821
840
|
repoRoot,
|
|
822
841
|
gateBlocked: result.exitCode !== 0,
|
|
842
|
+
evidenceWasStagedAtStart: hasStagedEvidencePath(initiallyStagedPaths),
|
|
823
843
|
})
|
|
824
844
|
) {
|
|
825
845
|
return 1;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pumuki",
|
|
3
|
-
"version": "6.3.
|
|
3
|
+
"version": "6.3.169",
|
|
4
4
|
"description": "Enterprise-grade AST Intelligence System with multi-platform support (iOS, Android, Backend, Frontend) and Feature-First + DDD + Clean Architecture enforcement. Includes dynamic violations API for intelligent querying.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|