@abloh/core 1.0.2-staging.34894792218 → 1.0.2-staging.34908219256

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/dist/index.d.ts CHANGED
@@ -7762,6 +7762,29 @@ type InitAbortLockfileCombination = "generated" | "not-generated";
7762
7762
  * confirmed the files, keeping the bytes first so the set lands whole or not at all. This family is
7763
7763
  * that put-back failing.
7764
7764
  */
7765
+ /**
7766
+ * A FILE `abloh init` WROTE THAT THE PLAN IS MADE OF, AND THIS REPOSITORY IGNORES.
7767
+ *
7768
+ * `abloh.yml`, `.abloh/setup.sh` and abloh's own workflow are read out of a pull request's MERGE
7769
+ * BASE, so a repository whose ignore rules keep one out of the commit has no setup at all - which
7770
+ * `angular-ui/ui-router` met as a warning at init time and a refusal on its next run, naming a file
7771
+ * init had just reported writing (round 5 v3, D3). A GENERATED SUPPORT FILE is the other half of
7772
+ * the same reading and is deliberately not here: it stays on disk uncommitted and is named once.
7773
+ */
7774
+ interface InitIgnoredContract {
7775
+ kind: "init-ignored-contract";
7776
+ /** the ignored file, repo-relative */
7777
+ path: string;
7778
+ /** any others in the same state, named so one edit can cover them */
7779
+ others: readonly string[];
7780
+ /** the single `!` line that undoes it, naming the outermost ignored ancestor */
7781
+ unIgnore: string;
7782
+ /** `<pattern> at <file>:<line>`, verbatim from git, or null where git did not say */
7783
+ rule: string | null;
7784
+ /** the ignore file to write the `!` line into, or null where git did not say */
7785
+ ignoreFile: string | null;
7786
+ }
7787
+ type InitIgnoredContractCombination = "named" | "unnamed";
7765
7788
  interface InitRestore {
7766
7789
  kind: "init-restore";
7767
7790
  /** The file, repo-relative, or nothing where the restore succeeded. */
@@ -7999,7 +8022,7 @@ interface SetupStatement {
7999
8022
  statement: "no-job-to-ride" | "trial-complete";
8000
8023
  }
8001
8024
  type SetupStatementCombination = SetupStatement["statement"];
8002
- type SetupFacts = SetupAnswer | SetupJobReading | SetupStepPlacementFacts | SetupStepWritten | SetupCiStepsRead | SetupRideOutcome | SetupPullRequestStep | SetupToolFailure | SetupCallerJob | SetupTrialReceipt | SetupTrialContract | SetupTrialPlan | SetupReceiptProblem | SetupRewrites | SetupReportSize | SetupPrivateRegistry | SetupUnsatisfiableCheck | SetupScriptRun | InitPin | InitValidationPrepare | InitValidationLedger | InitLocalTrial | InitCommit | InitWorkspaceDraft | InitDerivedCommand | InitAbortLockfile | InitRestore | InitAbortFiles | InitAbort | InitAnswer | ManifestPin | ImageReference | NodeRuntime | SetupStatement;
8025
+ type SetupFacts = SetupAnswer | SetupJobReading | SetupStepPlacementFacts | SetupStepWritten | SetupCiStepsRead | SetupRideOutcome | SetupPullRequestStep | SetupToolFailure | SetupCallerJob | SetupTrialReceipt | SetupTrialContract | SetupTrialPlan | SetupReceiptProblem | SetupRewrites | SetupReportSize | SetupPrivateRegistry | SetupUnsatisfiableCheck | SetupScriptRun | InitPin | InitValidationPrepare | InitValidationLedger | InitLocalTrial | InitCommit | InitWorkspaceDraft | InitDerivedCommand | InitAbortLockfile | InitIgnoredContract | InitRestore | InitAbortFiles | InitAbort | InitAnswer | ManifestPin | ImageReference | NodeRuntime | SetupStatement;
8003
8026
 
8004
8027
  /**
8005
8028
  * THE THREE STATES A MEASUREMENT MAY BE IN, AND THE TWO THINGS THE THIRD ONE MAY BECOME.
@@ -10584,6 +10607,19 @@ declare const MESSAGE_MAPPINGS: {
10584
10607
  };
10585
10608
  };
10586
10609
  };
10610
+ "init-ignored-contract": {
10611
+ select: (facts: InitIgnoredContract) => InitIgnoredContractCombination;
10612
+ rows: {
10613
+ named: (facts: InitIgnoredContract) => {
10614
+ kind: "message";
10615
+ refusal: Refusal;
10616
+ };
10617
+ unnamed: (facts: InitIgnoredContract) => {
10618
+ kind: "message";
10619
+ refusal: Refusal;
10620
+ };
10621
+ };
10622
+ };
10587
10623
  "init-restore": {
10588
10624
  select: (facts: InitRestore) => InitRestoreCombination;
10589
10625
  rows: {
@@ -21004,6 +21040,28 @@ declare const REFUSAL_REGISTRY: {
21004
21040
  * OWNED BY THE MACHINE, because the write abloh is retrying is one it has already made once. What
21005
21041
  * the maintainer needs is the path, which is why the sentence carries it.
21006
21042
  */
21043
+ readonly "init-contract-file-ignored": {
21044
+ readonly factFamily: "init-ignored-contract";
21045
+ readonly stage: "init";
21046
+ readonly owner: "repository";
21047
+ readonly privacy: "authored";
21048
+ readonly destinations: readonly ("artifact" | "terminal" | "markdown" | "job-log" | "check" | "slack" | "web" | "setup-comment" | "playground")[];
21049
+ readonly summary: (facts: {
21050
+ path?: string;
21051
+ others?: readonly string[];
21052
+ rule?: string;
21053
+ unIgnore?: string;
21054
+ ignoreFile?: string;
21055
+ }) => string;
21056
+ readonly remedy: (facts: {
21057
+ path?: string;
21058
+ others?: readonly string[];
21059
+ rule?: string;
21060
+ unIgnore?: string;
21061
+ ignoreFile?: string;
21062
+ }) => RefusalRemedy;
21063
+ readonly evidence: readonly EvidenceSlot[];
21064
+ };
21007
21065
  readonly "init-restore-failed": {
21008
21066
  readonly factFamily: "init-restore";
21009
21067
  readonly stage: "init";
package/dist/index.js CHANGED
@@ -13273,6 +13273,40 @@ var REFUSAL_REGISTRY = {
13273
13273
  * OWNED BY THE MACHINE, because the write abloh is retrying is one it has already made once. What
13274
13274
  * the maintainer needs is the path, which is why the sentence carries it.
13275
13275
  */
13276
+ /*
13277
+ * A CONTRACT FILE THIS REPOSITORY'S OWN IGNORE RULES KEEP OUT OF THE COMMIT.
13278
+ *
13279
+ * `abloh.yml`, `.abloh/setup.sh` and abloh's own workflow ARE the plan, and a run reads them out
13280
+ * of a pull request's merge base - so a repository that cannot commit one has no setup, whatever
13281
+ * else init did. `angular-ui/ui-router` (round 5 v3, D3) got a warning here and the refusal one
13282
+ * run later, naming a file `abloh init` had just reported writing and telling them to run the
13283
+ * command they had just run.
13284
+ *
13285
+ * A GENERATED SUPPORT FILE IS THE OTHER HALF AND IS NOT THIS. The lockfile is written for the
13286
+ * install step to read, its value is that it is on disk, and the 2026-08-26 ruling deliberately
13287
+ * leaves the ignore rule alone - so it stays uncommitted and the ending names it (census run 11,
13288
+ * 2026-09-14). The two answers come off the file's KIND and never off its name.
13289
+ *
13290
+ * THE REMEDY IS GIT'S OWN ANSWER, not a sentence written beside the code: `check-ignore -v` named
13291
+ * the pattern, the file and the line, and the `!` line points at the OUTERMOST ignored ancestor
13292
+ * because git never descends into an excluded directory.
13293
+ */
13294
+ "init-contract-file-ignored": {
13295
+ factFamily: "init-ignored-contract",
13296
+ stage: "init",
13297
+ owner: "repository",
13298
+ privacy: "authored",
13299
+ destinations: LOCAL_ONLY,
13300
+ summary: (facts) => {
13301
+ const also = (facts?.others ?? []).length === 0 ? "" : ` and ${quoted3([...facts?.others ?? []])}`;
13302
+ const rule = facts?.rule === void 0 || facts.rule === "" ? "" : ` - your own ${facts.rule}`;
13303
+ return `abloh cannot commit ${facts?.path ?? "the contract"}${also}, and abloh measures what your repository carries${rule}`;
13304
+ },
13305
+ remedy: (facts) => customerAction(
13306
+ `Add \`${facts?.unIgnore ?? "!abloh.yml"}\` to ${facts?.ignoreFile ?? ".gitignore"}, then run abloh init again.`
13307
+ ),
13308
+ evidence: NO_EVIDENCE
13309
+ },
13276
13310
  "init-restore-failed": {
13277
13311
  factFamily: "init-restore",
13278
13312
  stage: "init",
@@ -17671,6 +17705,31 @@ var SETUP_MAPPINGS = {
17671
17705
  }))
17672
17706
  }
17673
17707
  },
17708
+ "init-ignored-contract": {
17709
+ /* THE RULE IS THE ONE FACT THAT CAN BE ABSENT - git answers the path without naming a pattern
17710
+ where an ignore file is unreadable - and the remedy is the same edit either way. */
17711
+ select: (facts) => facts.rule === null ? "unnamed" : "named",
17712
+ rows: {
17713
+ named: (facts) => message(refuse("init-contract-file-ignored", {
17714
+ facts: {
17715
+ path: facts.path,
17716
+ others: facts.others,
17717
+ rule: facts.rule ?? "",
17718
+ unIgnore: facts.unIgnore,
17719
+ ignoreFile: facts.ignoreFile ?? ".gitignore"
17720
+ }
17721
+ })),
17722
+ unnamed: (facts) => message(refuse("init-contract-file-ignored", {
17723
+ facts: {
17724
+ path: facts.path,
17725
+ others: facts.others,
17726
+ rule: "",
17727
+ unIgnore: facts.unIgnore,
17728
+ ignoreFile: facts.ignoreFile ?? ".gitignore"
17729
+ }
17730
+ }))
17731
+ }
17732
+ },
17674
17733
  "init-restore": {
17675
17734
  select: (facts) => facts.path === null ? "restored" : "failed",
17676
17735
  rows: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abloh/core",
3
- "version": "1.0.2-staging.34894792218",
3
+ "version": "1.0.2-staging.34908219256",
4
4
  "description": "Abloh core: normalized results contract, diff scoping, policy, findings, scoring. \"name\" will publish under the @abloh scope.",
5
5
  "type": "module",
6
6
  "license": "SEE LICENSE IN LICENSE",