Skip to content
Draft
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
3 changes: 2 additions & 1 deletion framework/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@
"autoload-dev": {
"psr-4": {
"Coretsia\\Tools\\Tests\\": "tools/tests/",
"Coretsia\\Tools\\Spikes\\": "tools/spikes/"
"Coretsia\\Tools\\Spikes\\": "tools/spikes/",
"Coretsia\\Tools\\Support\\": "tools/support/"
},
"exclude-from-classmap": [
"tools/spikes/fixtures/",
Expand Down
24 changes: 12 additions & 12 deletions framework/composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@
use Coretsia\Devtools\CliSpikes\Spikes\SpikesExitCodeMapper;
use Coretsia\Devtools\CliSpikes\Spikes\SpikesPaths;
use Coretsia\Platform\Cli\Error\ErrorCodes as CliErrorCodes;
use Coretsia\Tools\Spikes\_support\DeterministicException;
use Coretsia\Tools\Spikes\deptrac\DeptracGraphWorkflow;
use Coretsia\Tools\Support\DeterministicException;

final class DeptracGraphCommand implements CommandInterface
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
use Coretsia\Devtools\CliSpikes\Spikes\SpikesExitCodeMapper;
use Coretsia\Devtools\CliSpikes\Spikes\SpikesPaths;
use Coretsia\Platform\Cli\Error\ErrorCodes as CliErrorCodes;
use Coretsia\Tools\Spikes\_support\DeterministicException;
use Coretsia\Tools\Support\DeterministicException;

final class DoctorCommand implements CommandInterface
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@
use Coretsia\Devtools\CliSpikes\Spikes\SpikesBootstrapFailedException;
use Coretsia\Devtools\CliSpikes\Spikes\SpikesExitCodeMapper;
use Coretsia\Platform\Cli\Error\ErrorCodes as CliErrorCodes;
use Coretsia\Tools\Spikes\_support\DeterministicException;
use Coretsia\Tools\Spikes\_support\ErrorCodes as SpikeErrorCodes;
use Coretsia\Tools\Spikes\config_merge\ConfigDebugWorkflow;
use Coretsia\Tools\Support\DeterministicException;
use Coretsia\Tools\Support\ErrorCodes as ToolsErrorCodes;

/**
* Phase 0 spike command: debug config merge trace for a dot-key.
Expand Down Expand Up @@ -110,7 +110,7 @@ public function run(InputInterface $input, OutputInterface $output): int
return SpikesExitCodeMapper::success();
} catch (DeterministicException $e) {
if (
$e->code() === SpikeErrorCodes::CORETSIA_SPIKES_FIXTURE_PATH_INVALID
$e->code() === ToolsErrorCodes::CORETSIA_SPIKES_FIXTURE_PATH_INVALID
&& self::isCliConfigInvalidMessage($e->getMessage())
) {
$output->error(CliErrorCodes::CORETSIA_CLI_CONFIG_INVALID, $e->getMessage());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@
use Coretsia\Devtools\CliSpikes\Spikes\SpikesExitCodeMapper;
use Coretsia\Devtools\CliSpikes\Spikes\SpikesPaths;
use Coretsia\Platform\Cli\Error\ErrorCodes as CliErrorCodes;
use Coretsia\Tools\Spikes\_support\DeterministicException;
use Coretsia\Tools\Spikes\fingerprint\FingerprintWorkflow;
use Coretsia\Tools\Support\DeterministicException;

/**
* `coretsia spike:fingerprint`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@
use Coretsia\Devtools\CliSpikes\Spikes\SpikesExitCodeMapper;
use Coretsia\Devtools\CliSpikes\Spikes\SpikesPaths;
use Coretsia\Platform\Cli\Error\ErrorCodes as CliErrorCodes;
use Coretsia\Tools\Spikes\_support\DeterministicException;
use Coretsia\Tools\Spikes\workspace\WorkspaceSyncEntryWorkflow;
use Coretsia\Tools\Support\DeterministicException;

final class WorkspaceSyncApplyCommand implements CommandInterface
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@
use Coretsia\Devtools\CliSpikes\Spikes\SpikesExitCodeMapper;
use Coretsia\Devtools\CliSpikes\Spikes\SpikesPaths;
use Coretsia\Platform\Cli\Error\ErrorCodes as CliErrorCodes;
use Coretsia\Tools\Spikes\_support\DeterministicException;
use Coretsia\Tools\Spikes\workspace\WorkspaceSyncEntryWorkflow;
use Coretsia\Tools\Support\DeterministicException;

final class WorkspaceSyncDryRunCommand implements CommandInterface
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,10 +126,6 @@ private function shouldSkipFile(string $absPath): bool
{
$path = \str_replace('\\', '/', $absPath);

if (\str_ends_with($path, '/framework/tools/spikes/_support/ConsoleOutput.php')) {
return true;
}

if (\str_ends_with($path, '/framework/tools/spikes/_support/DeterminismRunner.php')) {
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -227,10 +227,6 @@ private function shouldSkipFile(string $absPath): bool
{
$path = \str_replace('\\', '/', $absPath);

if (\str_ends_with($path, '/framework/tools/spikes/_support/ConsoleOutput.php')) {
return true;
}

if (\str_contains($path, '/framework/tools/spikes/tests/')) {
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,13 @@ protected function newHarness(array $workerOverride = [], array $behavior = []):
'control' => ['transport' => 'unix'],
];

$effectiveDriver = $workerOverride['driver']
?? (
\PHP_OS_FAMILY === 'Windows'
? 'proc'
: 'pcntl'
);

$platformTimeouts = \PHP_OS_FAMILY === 'Windows'
? [
/*
Expand All @@ -110,7 +117,14 @@ protected function newHarness(array $workerOverride = [], array $behavior = []):
'force_kill_timeout_ms' => 2_000,
]
: [
'start_timeout_ms' => 2_000,
/*
* PCNTL startup is intentionally kept tight. Proc startup also owns
* process-host and child PHP initialization, which can be materially
* slower under scheduler or filesystem contention (notably WSL).
*/
'start_timeout_ms' => $effectiveDriver === 'proc'
? 10_000
: 2_000,
'stop_timeout_ms' => 500,
'force_kill_timeout_ms' => 250,
];
Expand Down
20 changes: 10 additions & 10 deletions framework/tools/build/build_icons.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
* See LICENSE and NOTICE in the project root for full license information.
*/

require_once __DIR__ . '/../spikes/_support/ConsoleOutput.php';
require_once __DIR__ . '/../spikes/_support/ErrorCodes.php';
require_once __DIR__ . '/../spikes/_support/DeterministicException.php';
require_once __DIR__ . '/../spikes/_support/DeterministicFile.php';
require_once __DIR__ . '/../support/ConsoleOutput.php';
require_once __DIR__ . '/../support/ErrorCodes.php';
require_once __DIR__ . '/../support/DeterministicException.php';
require_once __DIR__ . '/../support/DeterministicFile.php';

final class BuildIconsTool
{
Expand Down Expand Up @@ -133,14 +133,14 @@ public static function main(array $argv): int

if ($check) {
if ($changedFiles !== []) {
\Coretsia\Tools\Spikes\_support\ConsoleOutput::codeWithDiagnostics(
\Coretsia\Tools\Support\ConsoleOutput::codeWithDiagnostics(
self::CODE_OUT_OF_DATE,
$changedFiles,
);
return 1;
}

\Coretsia\Tools\Spikes\_support\ConsoleOutput::line('OK', false);
\Coretsia\Tools\Support\ConsoleOutput::line('OK', false);
return 0;
}

Expand All @@ -152,8 +152,8 @@ public static function main(array $argv): int
}
}

\Coretsia\Tools\Spikes\_support\ConsoleOutput::line('OK', false);
\Coretsia\Tools\Spikes\_support\ConsoleOutput::lines($changedFiles, false);
\Coretsia\Tools\Support\ConsoleOutput::line('OK', false);
\Coretsia\Tools\Support\ConsoleOutput::lines($changedFiles, false);

return 0;
}
Expand Down Expand Up @@ -347,7 +347,7 @@ private static function writeBytes(string $path, string $bytes): void
throw new RuntimeException('Cannot create directory: ' . $dir);
}

\Coretsia\Tools\Spikes\_support\DeterministicFile::writeBytesExact($path, $bytes);
\Coretsia\Tools\Support\DeterministicFile::writeBytesExact($path, $bytes);
}

private static function findExecutable(string $name): ?string
Expand Down Expand Up @@ -513,6 +513,6 @@ private static function repoRootUnsafe(): string
exit(BuildIconsTool::main($argv));
} catch (Throwable $e) {
$msg = str_replace(["\r\n", "\r"], "\n", $e->getMessage());
\Coretsia\Tools\Spikes\_support\ConsoleOutput::line(BuildIconsTool::CODE_FAILED . ": {$msg}");
\Coretsia\Tools\Support\ConsoleOutput::line(BuildIconsTool::CODE_FAILED . ": {$msg}");
exit(1);
}
29 changes: 15 additions & 14 deletions framework/tools/build/deptrac_generate.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
* See LICENSE and NOTICE in the project root for full license information.
*/

require_once __DIR__ . '/../spikes/_support/ConsoleOutput.php';
require_once __DIR__ . '/../spikes/_support/ErrorCodes.php';
require_once __DIR__ . '/../spikes/_support/DeterministicException.php';
require_once __DIR__ . '/../spikes/_support/DeterministicFile.php';
require_once __DIR__ . '/../support/ConsoleOutput.php';
require_once __DIR__ . '/../support/ErrorCodes.php';
require_once __DIR__ . '/../support/DeterministicException.php';
require_once __DIR__ . '/../support/DeterministicFile.php';

final class DeptracGenerateTool
{
Expand Down Expand Up @@ -98,7 +98,7 @@ public static function main(array $argv): int

$diagnostics[] = 'Run: php framework/tools/build/deptrac_generate.php --apply';

\Coretsia\Tools\Spikes\_support\ConsoleOutput::codeWithDiagnostics(
\Coretsia\Tools\Support\ConsoleOutput::codeWithDiagnostics(
self::CODE_OUT_OF_DATE,
$diagnostics,
);
Expand All @@ -118,17 +118,17 @@ public static function main(array $argv): int
self::writeGraphArtifacts($artifactsDir, $model['nodes'], $model['edges']);
}

\Coretsia\Tools\Spikes\_support\ConsoleOutput::line('OK', false);
\Coretsia\Tools\Support\ConsoleOutput::line('OK', false);

if ($allowlistMissing) {
\Coretsia\Tools\Spikes\_support\ConsoleOutput::line(self::rel($repoRoot, $allowlistPath), false);
\Coretsia\Tools\Support\ConsoleOutput::line(self::rel($repoRoot, $allowlistPath), false);
}

if ($changed) {
\Coretsia\Tools\Spikes\_support\ConsoleOutput::line(self::rel($repoRoot, $outPath), false);
\Coretsia\Tools\Support\ConsoleOutput::line(self::rel($repoRoot, $outPath), false);
}

\Coretsia\Tools\Spikes\_support\ConsoleOutput::line(self::rel($repoRoot, $artifactsDir), false);
\Coretsia\Tools\Support\ConsoleOutput::line(self::rel($repoRoot, $artifactsDir), false);

return 0;
}
Expand Down Expand Up @@ -159,7 +159,7 @@ public static function emitFailure(Throwable $e): void

$code = array_shift($lines);
if (!is_string($code) || $code === '') {
\Coretsia\Tools\Spikes\_support\ConsoleOutput::line(self::CODE_GENERATE_FAILED);
\Coretsia\Tools\Support\ConsoleOutput::line(self::CODE_GENERATE_FAILED);

return;
}
Expand All @@ -174,7 +174,7 @@ public static function emitFailure(Throwable $e): void
}
}

\Coretsia\Tools\Spikes\_support\ConsoleOutput::codeWithDiagnostics($code, $diagnostics);
\Coretsia\Tools\Support\ConsoleOutput::codeWithDiagnostics($code, $diagnostics);
}

/**
Expand Down Expand Up @@ -706,14 +706,15 @@ private static function buildRuleset(
/**
* Temporal bootstrap rule:
* when a SSoT package depends on not-yet-materialized owner packages, allow direct composer edges
* to materialized transitive SSoT dependencies. This keeps early Phase 0 packages analyzable while
* foundation/kernel owner packages are still absent, without opening arbitrary package edges.
* to materialized transitive SSoT dependencies. This keeps packages analyzable while declared
* owner packages are not yet materialized, without opening arbitrary package edges.
*
* @param array{id:string,packageId:string,layer:string,slug:string,composerName:string,path:string,srcPath:string,psr4:string,requireNames:list<string>} $package
* @param list<string> $allowedPackageIds
* @param array<string, true> $activePackageIds
* @param array<string, string> $composerNameToPackageId
* @param array<string, list<string>> $ssotRuleset
*
* @return list<string>
*/
private static function applyTemporalMissingDependencyCompat(
Expand Down Expand Up @@ -1311,7 +1312,7 @@ private static function writeFile(string $path, string $content): void
$content .= "\n";
}

\Coretsia\Tools\Spikes\_support\DeterministicFile::writeTextLf($path, $content);
\Coretsia\Tools\Support\DeterministicFile::writeTextLf($path, $content);
}

/**
Expand Down
16 changes: 8 additions & 8 deletions framework/tools/build/new-package.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
* See LICENSE and NOTICE in the project root for full license information.
*/

require_once __DIR__ . '/../spikes/_support/ConsoleOutput.php';
require_once __DIR__ . '/../spikes/_support/ErrorCodes.php';
require_once __DIR__ . '/../spikes/_support/DeterministicException.php';
require_once __DIR__ . '/../spikes/_support/DeterministicFile.php';
require_once __DIR__ . '/../support/ConsoleOutput.php';
require_once __DIR__ . '/../support/ErrorCodes.php';
require_once __DIR__ . '/../support/DeterministicException.php';
require_once __DIR__ . '/../support/DeterministicFile.php';

final class NewPackage
{
Expand Down Expand Up @@ -82,8 +82,8 @@ public static function main(array $argv): int

self::runPackageScaffoldSync($repoRoot, $packageDir);

\Coretsia\Tools\Spikes\_support\ConsoleOutput::line('OK', false);
\Coretsia\Tools\Spikes\_support\ConsoleOutput::line("framework/packages/$layer/$slug", false);
\Coretsia\Tools\Support\ConsoleOutput::line('OK', false);
\Coretsia\Tools\Support\ConsoleOutput::line("framework/packages/$layer/$slug", false);

return 0;
}
Expand Down Expand Up @@ -457,7 +457,7 @@ private static function writeTextLf(string $path, string $content): void
{
$content = self::normalizeToLfFinalNewline($content);

\Coretsia\Tools\Spikes\_support\DeterministicFile::writeTextLf($path, $content);
\Coretsia\Tools\Support\DeterministicFile::writeTextLf($path, $content);
}

private static function mkdir(string $path): void
Expand Down Expand Up @@ -601,6 +601,6 @@ private static function repoRootUnsafe(): string
exit(NewPackage::main($argv));
} catch (Throwable $e) {
$msg = \str_replace(["\r\n", "\r"], "\n", $e->getMessage());
\Coretsia\Tools\Spikes\_support\ConsoleOutput::line(NewPackage::CODE_FAILED . ": {$msg}");
\Coretsia\Tools\Support\ConsoleOutput::line(NewPackage::CODE_FAILED . ": {$msg}");
exit(1);
}
Loading