instar 1.3.222 → 1.3.224
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/cli.js +10 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/devPreflight.d.ts +41 -0
- package/dist/commands/devPreflight.d.ts.map +1 -0
- package/dist/commands/devPreflight.js +163 -0
- package/dist/commands/devPreflight.js.map +1 -0
- package/dist/core/SafeGitExecutor.d.ts.map +1 -1
- package/dist/core/SafeGitExecutor.js +1 -0
- package/dist/core/SafeGitExecutor.js.map +1 -1
- package/dist/core/frameworkSessionLaunch.d.ts.map +1 -1
- package/dist/core/frameworkSessionLaunch.js +7 -4
- package/dist/core/frameworkSessionLaunch.js.map +1 -1
- package/dist/providers/adapters/openai-codex/models.d.ts.map +1 -1
- package/dist/providers/adapters/openai-codex/models.js +46 -24
- package/dist/providers/adapters/openai-codex/models.js.map +1 -1
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +2 -0
- package/dist/scaffold/templates.js.map +1 -1
- package/package.json +1 -1
- package/scripts/generate-builtin-manifest.cjs +1 -0
- package/src/data/builtin-manifest.json +40 -32
- package/src/scaffold/templates.ts +2 -0
- package/upgrades/1.3.223.md +56 -0
- package/upgrades/1.3.224.md +47 -0
- package/upgrades/codex-fast-model-gpt52-retired.eli16.md +26 -0
- package/upgrades/dev-preflight-new-surface-friction-guard.eli16.md +18 -0
- package/upgrades/side-effects/codex-fast-model-gpt52-retired.md +59 -0
- package/upgrades/side-effects/dev-preflight-new-surface-friction-guard.md +29 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-06-
|
|
5
|
-
"instarVersion": "1.3.
|
|
6
|
-
"entryCount":
|
|
4
|
+
"generatedAt": "2026-06-03T14:11:31.808Z",
|
|
5
|
+
"instarVersion": "1.3.224",
|
|
6
|
+
"entryCount": 196,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
9
9
|
"id": "hook:session-start",
|
|
@@ -778,7 +778,7 @@
|
|
|
778
778
|
"type": "cli-command",
|
|
779
779
|
"domain": "setup",
|
|
780
780
|
"sourcePath": "src/cli.ts",
|
|
781
|
-
"contentHash": "
|
|
781
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
782
782
|
"since": "2025-01-01"
|
|
783
783
|
},
|
|
784
784
|
"cli:setup": {
|
|
@@ -786,7 +786,7 @@
|
|
|
786
786
|
"type": "cli-command",
|
|
787
787
|
"domain": "setup",
|
|
788
788
|
"sourcePath": "src/cli.ts",
|
|
789
|
-
"contentHash": "
|
|
789
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
790
790
|
"since": "2025-01-01"
|
|
791
791
|
},
|
|
792
792
|
"cli:add": {
|
|
@@ -794,7 +794,7 @@
|
|
|
794
794
|
"type": "cli-command",
|
|
795
795
|
"domain": "setup",
|
|
796
796
|
"sourcePath": "src/cli.ts",
|
|
797
|
-
"contentHash": "
|
|
797
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
798
798
|
"since": "2025-01-01"
|
|
799
799
|
},
|
|
800
800
|
"cli:backup": {
|
|
@@ -802,7 +802,7 @@
|
|
|
802
802
|
"type": "cli-command",
|
|
803
803
|
"domain": "operations",
|
|
804
804
|
"sourcePath": "src/cli.ts",
|
|
805
|
-
"contentHash": "
|
|
805
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
806
806
|
"since": "2025-01-01"
|
|
807
807
|
},
|
|
808
808
|
"cli:git": {
|
|
@@ -810,7 +810,7 @@
|
|
|
810
810
|
"type": "cli-command",
|
|
811
811
|
"domain": "coordination",
|
|
812
812
|
"sourcePath": "src/cli.ts",
|
|
813
|
-
"contentHash": "
|
|
813
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
814
814
|
"since": "2025-01-01"
|
|
815
815
|
},
|
|
816
816
|
"cli:memory": {
|
|
@@ -818,7 +818,7 @@
|
|
|
818
818
|
"type": "cli-command",
|
|
819
819
|
"domain": "memory",
|
|
820
820
|
"sourcePath": "src/cli.ts",
|
|
821
|
-
"contentHash": "
|
|
821
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
822
822
|
"since": "2025-01-01"
|
|
823
823
|
},
|
|
824
824
|
"cli:knowledge": {
|
|
@@ -826,7 +826,7 @@
|
|
|
826
826
|
"type": "cli-command",
|
|
827
827
|
"domain": "memory",
|
|
828
828
|
"sourcePath": "src/cli.ts",
|
|
829
|
-
"contentHash": "
|
|
829
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
830
830
|
"since": "2025-01-01"
|
|
831
831
|
},
|
|
832
832
|
"cli:semantic": {
|
|
@@ -834,7 +834,7 @@
|
|
|
834
834
|
"type": "cli-command",
|
|
835
835
|
"domain": "memory",
|
|
836
836
|
"sourcePath": "src/cli.ts",
|
|
837
|
-
"contentHash": "
|
|
837
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
838
838
|
"since": "2025-01-01"
|
|
839
839
|
},
|
|
840
840
|
"cli:intent": {
|
|
@@ -842,7 +842,7 @@
|
|
|
842
842
|
"type": "cli-command",
|
|
843
843
|
"domain": "intent",
|
|
844
844
|
"sourcePath": "src/cli.ts",
|
|
845
|
-
"contentHash": "
|
|
845
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
846
846
|
"since": "2025-01-01"
|
|
847
847
|
},
|
|
848
848
|
"cli:feedback": {
|
|
@@ -850,7 +850,7 @@
|
|
|
850
850
|
"type": "cli-command",
|
|
851
851
|
"domain": "feedback",
|
|
852
852
|
"sourcePath": "src/cli.ts",
|
|
853
|
-
"contentHash": "
|
|
853
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
854
854
|
"since": "2025-01-01"
|
|
855
855
|
},
|
|
856
856
|
"cli:server": {
|
|
@@ -858,7 +858,7 @@
|
|
|
858
858
|
"type": "cli-command",
|
|
859
859
|
"domain": "server",
|
|
860
860
|
"sourcePath": "src/cli.ts",
|
|
861
|
-
"contentHash": "
|
|
861
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
862
862
|
"since": "2025-01-01"
|
|
863
863
|
},
|
|
864
864
|
"cli:status": {
|
|
@@ -866,7 +866,7 @@
|
|
|
866
866
|
"type": "cli-command",
|
|
867
867
|
"domain": "monitoring",
|
|
868
868
|
"sourcePath": "src/cli.ts",
|
|
869
|
-
"contentHash": "
|
|
869
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
870
870
|
"since": "2025-01-01"
|
|
871
871
|
},
|
|
872
872
|
"cli:user": {
|
|
@@ -874,7 +874,7 @@
|
|
|
874
874
|
"type": "cli-command",
|
|
875
875
|
"domain": "users",
|
|
876
876
|
"sourcePath": "src/cli.ts",
|
|
877
|
-
"contentHash": "
|
|
877
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
878
878
|
"since": "2025-01-01"
|
|
879
879
|
},
|
|
880
880
|
"cli:relationship": {
|
|
@@ -882,7 +882,7 @@
|
|
|
882
882
|
"type": "cli-command",
|
|
883
883
|
"domain": "relationships",
|
|
884
884
|
"sourcePath": "src/cli.ts",
|
|
885
|
-
"contentHash": "
|
|
885
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
886
886
|
"since": "2025-01-01"
|
|
887
887
|
},
|
|
888
888
|
"cli:job": {
|
|
@@ -890,7 +890,7 @@
|
|
|
890
890
|
"type": "cli-command",
|
|
891
891
|
"domain": "scheduling",
|
|
892
892
|
"sourcePath": "src/cli.ts",
|
|
893
|
-
"contentHash": "
|
|
893
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
894
894
|
"since": "2025-01-01"
|
|
895
895
|
},
|
|
896
896
|
"cli:lifeline": {
|
|
@@ -898,7 +898,7 @@
|
|
|
898
898
|
"type": "cli-command",
|
|
899
899
|
"domain": "communication",
|
|
900
900
|
"sourcePath": "src/cli.ts",
|
|
901
|
-
"contentHash": "
|
|
901
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
902
902
|
"since": "2025-01-01"
|
|
903
903
|
},
|
|
904
904
|
"cli:list": {
|
|
@@ -906,7 +906,7 @@
|
|
|
906
906
|
"type": "cli-command",
|
|
907
907
|
"domain": "monitoring",
|
|
908
908
|
"sourcePath": "src/cli.ts",
|
|
909
|
-
"contentHash": "
|
|
909
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
910
910
|
"since": "2025-01-01"
|
|
911
911
|
},
|
|
912
912
|
"cli:autostart": {
|
|
@@ -914,7 +914,7 @@
|
|
|
914
914
|
"type": "cli-command",
|
|
915
915
|
"domain": "operations",
|
|
916
916
|
"sourcePath": "src/cli.ts",
|
|
917
|
-
"contentHash": "
|
|
917
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
918
918
|
"since": "2025-01-01"
|
|
919
919
|
},
|
|
920
920
|
"cli:migrate": {
|
|
@@ -922,7 +922,7 @@
|
|
|
922
922
|
"type": "cli-command",
|
|
923
923
|
"domain": "updates",
|
|
924
924
|
"sourcePath": "src/cli.ts",
|
|
925
|
-
"contentHash": "
|
|
925
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
926
926
|
"since": "2025-01-01"
|
|
927
927
|
},
|
|
928
928
|
"cli:machines": {
|
|
@@ -930,7 +930,7 @@
|
|
|
930
930
|
"type": "cli-command",
|
|
931
931
|
"domain": "coordination",
|
|
932
932
|
"sourcePath": "src/cli.ts",
|
|
933
|
-
"contentHash": "
|
|
933
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
934
934
|
"since": "2025-01-01"
|
|
935
935
|
},
|
|
936
936
|
"cli:whoami": {
|
|
@@ -938,7 +938,7 @@
|
|
|
938
938
|
"type": "cli-command",
|
|
939
939
|
"domain": "identity",
|
|
940
940
|
"sourcePath": "src/cli.ts",
|
|
941
|
-
"contentHash": "
|
|
941
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
942
942
|
"since": "2025-01-01"
|
|
943
943
|
},
|
|
944
944
|
"cli:pair": {
|
|
@@ -946,7 +946,7 @@
|
|
|
946
946
|
"type": "cli-command",
|
|
947
947
|
"domain": "coordination",
|
|
948
948
|
"sourcePath": "src/cli.ts",
|
|
949
|
-
"contentHash": "
|
|
949
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
950
950
|
"since": "2025-01-01"
|
|
951
951
|
},
|
|
952
952
|
"cli:join": {
|
|
@@ -954,7 +954,7 @@
|
|
|
954
954
|
"type": "cli-command",
|
|
955
955
|
"domain": "coordination",
|
|
956
956
|
"sourcePath": "src/cli.ts",
|
|
957
|
-
"contentHash": "
|
|
957
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
958
958
|
"since": "2025-01-01"
|
|
959
959
|
},
|
|
960
960
|
"cli:wakeup": {
|
|
@@ -962,7 +962,7 @@
|
|
|
962
962
|
"type": "cli-command",
|
|
963
963
|
"domain": "coordination",
|
|
964
964
|
"sourcePath": "src/cli.ts",
|
|
965
|
-
"contentHash": "
|
|
965
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
966
966
|
"since": "2025-01-01"
|
|
967
967
|
},
|
|
968
968
|
"cli:leave": {
|
|
@@ -970,7 +970,7 @@
|
|
|
970
970
|
"type": "cli-command",
|
|
971
971
|
"domain": "coordination",
|
|
972
972
|
"sourcePath": "src/cli.ts",
|
|
973
|
-
"contentHash": "
|
|
973
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
974
974
|
"since": "2025-01-01"
|
|
975
975
|
},
|
|
976
976
|
"cli:doctor": {
|
|
@@ -978,7 +978,7 @@
|
|
|
978
978
|
"type": "cli-command",
|
|
979
979
|
"domain": "monitoring",
|
|
980
980
|
"sourcePath": "src/cli.ts",
|
|
981
|
-
"contentHash": "
|
|
981
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
982
982
|
"since": "2025-01-01"
|
|
983
983
|
},
|
|
984
984
|
"cli:review": {
|
|
@@ -986,7 +986,7 @@
|
|
|
986
986
|
"type": "cli-command",
|
|
987
987
|
"domain": "monitoring",
|
|
988
988
|
"sourcePath": "src/cli.ts",
|
|
989
|
-
"contentHash": "
|
|
989
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
990
990
|
"since": "2025-01-01"
|
|
991
991
|
},
|
|
992
992
|
"cli:nuke": {
|
|
@@ -994,7 +994,7 @@
|
|
|
994
994
|
"type": "cli-command",
|
|
995
995
|
"domain": "operations",
|
|
996
996
|
"sourcePath": "src/cli.ts",
|
|
997
|
-
"contentHash": "
|
|
997
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
998
998
|
"since": "2025-01-01"
|
|
999
999
|
},
|
|
1000
1000
|
"cli:playbook": {
|
|
@@ -1002,7 +1002,15 @@
|
|
|
1002
1002
|
"type": "cli-command",
|
|
1003
1003
|
"domain": "context",
|
|
1004
1004
|
"sourcePath": "src/cli.ts",
|
|
1005
|
-
"contentHash": "
|
|
1005
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
1006
|
+
"since": "2025-01-01"
|
|
1007
|
+
},
|
|
1008
|
+
"cli:dev-preflight": {
|
|
1009
|
+
"id": "cli:dev-preflight",
|
|
1010
|
+
"type": "cli-command",
|
|
1011
|
+
"domain": "development",
|
|
1012
|
+
"sourcePath": "src/cli.ts",
|
|
1013
|
+
"contentHash": "1b2634f7e1f2a14c409625a87774b5d9fe06cf11b529d38d8b4489a76c6b6f4d",
|
|
1006
1014
|
"since": "2025-01-01"
|
|
1007
1015
|
},
|
|
1008
1016
|
"template:build-stop-hook.sh": {
|
|
@@ -744,6 +744,8 @@ curl -H "Authorization: Bearer $AUTH" http://localhost:${port}/capabilities
|
|
|
744
744
|
|
|
745
745
|
This returns your full capability matrix: scripts, hooks, Telegram status, jobs, git sync status, relationships, and more. **This is the source of truth about what you can do — not the prose descriptions in this file.**
|
|
746
746
|
|
|
747
|
+
Instar contributors can run \`instar dev:preflight\` before opening PRs to run lint, CapabilityIndex discoverability checks, and an advisory new-route-prefix scan against the diff.
|
|
748
|
+
|
|
747
749
|
**Critical rule**: If this CLAUDE.md says a feature is "for standalone agents" or "when configured" or uses any qualifier — do NOT conclude you lack the feature. Check \`/capabilities\` instead. Documentation describes features in general; the API tells you what's actually running for YOU right now. When they conflict, the API wins.
|
|
748
750
|
|
|
749
751
|
### Registry First, Explore Second
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
Re-points the Codex `fast` model tier off the now-retired `gpt-5.2`.
|
|
9
|
+
|
|
10
|
+
**The bug (live, fleet-wide).** As of 2026-06-03 OpenAI retired `gpt-5.2` from the
|
|
11
|
+
ChatGPT-account Codex surface — `codex exec --model gpt-5.2` now returns HTTP 400
|
|
12
|
+
*"The 'gpt-5.2' model is not supported when using Codex with a ChatGPT account."*
|
|
13
|
+
Both Codex model-tier maps hardcoded the `fast`/`haiku` tier to `gpt-5.2`:
|
|
14
|
+
|
|
15
|
+
- `src/providers/adapters/openai-codex/models.ts` (`TIER_TO_MODEL.fast`) — the intel /
|
|
16
|
+
one-shot path (reviewers, sentinels, CommitmentSentinel, tone-gate, classification).
|
|
17
|
+
- `src/core/frameworkSessionLaunch.ts` (`resolveModelForFramework`, codex-cli) — the
|
|
18
|
+
session-launch path.
|
|
19
|
+
|
|
20
|
+
So **every cheap Codex call on every Codex agent was silently failing** — observed live as
|
|
21
|
+
`[CommitmentSentinel] LLM detection failed: … --model gpt-5.2 …` on codey, repeating.
|
|
22
|
+
|
|
23
|
+
**The fix.** Both maps now resolve `fast`/`haiku` to `gpt-5.4-mini` — the cheapest model
|
|
24
|
+
still accepted on the ChatGPT account (empirically re-probed 2026-06-03: `gpt-5.2` rejected,
|
|
25
|
+
`gpt-5.4`/`gpt-5.4-mini` accepted). `gpt-5.4-mini` is already the `balanced` choice, so the
|
|
26
|
+
`fast` and `balanced` tiers now coincide.
|
|
27
|
+
|
|
28
|
+
**Trade-off (intentional, documented).** `gpt-5.2` was the only *non-reasoning* model; with it
|
|
29
|
+
retired there is no cheaper option, so cheap Codex calls now run on a reasoning model (higher
|
|
30
|
+
token burn per call). A working model beats a 400-ing one, but this raises cheap-call quota
|
|
31
|
+
pressure on Codex agents until the structural follow-up lands.
|
|
32
|
+
|
|
33
|
+
**Follow-up (not in this patch).** Drift-resilience: validate the resolved model against a
|
|
34
|
+
known-good set and auto-fall-back on a "not supported" 400, so the *next* model retirement
|
|
35
|
+
self-heals instead of breaking the fleet (the second such break after the 2026-04-14 `-codex`
|
|
36
|
+
retirement). Tracked as a follow-up in `models.ts`.
|
|
37
|
+
|
|
38
|
+
## What to Tell Your User
|
|
39
|
+
|
|
40
|
+
Nothing required — this is an internal Codex reliability fix (agent-only). Codex agents'
|
|
41
|
+
cheap internal calls (commitment detection, tone gating, classification) were failing because
|
|
42
|
+
a model name they used got retired; they now use a supported model again.
|
|
43
|
+
|
|
44
|
+
## Summary of New Capabilities
|
|
45
|
+
|
|
46
|
+
None — bug fix only. No new routes, config, or surfaces.
|
|
47
|
+
|
|
48
|
+
## Evidence
|
|
49
|
+
|
|
50
|
+
- Live failure: codey `logs/server.log` — `[CommitmentSentinel] LLM detection failed: Codex CLI
|
|
51
|
+
error: … codex exec --model gpt-5.2 …` + the codex 400 `invalid_request_error`.
|
|
52
|
+
- Empirical re-probe (2026-06-03, Justin's ChatGPT subscription): `gpt-5.2` → 400 rejected;
|
|
53
|
+
`gpt-5.4` and `gpt-5.4-mini` → accepted.
|
|
54
|
+
- Tests: `tests/unit/codex-model-tier-resolution.test.ts` (new — pins both resolvers + a
|
|
55
|
+
retired-`gpt-5.2` regression guard across all tiers); updated `session-manager-behavioral`
|
|
56
|
+
and `StallTriageNurse` assertions (haiku/fast → `gpt-5.4-mini`).
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: minor -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
Adds `instar dev:preflight`, a verify-only contributor preflight for PRs that touch new server
|
|
9
|
+
surfaces.
|
|
10
|
+
|
|
11
|
+
The command runs lint, runs the CapabilityIndex discoverability unit tests, and scans the diff
|
|
12
|
+
against main for newly added Express route registrations. If the scan sees a new top-level route
|
|
13
|
+
prefix that is not claimed in `CAPABILITY_INDEX`, it prints an advisory warning.
|
|
14
|
+
|
|
15
|
+
The route scan is intentionally not authority. It is a best-effort regex over added diff lines, not
|
|
16
|
+
an AST parser, and it never edits source. The command exits nonzero only when lint or the explicit
|
|
17
|
+
discoverability/CapabilityIndex test invocation fails.
|
|
18
|
+
|
|
19
|
+
The safe git funnel now also treats `git diff` as an explicitly allowed source-tree read-tier verb
|
|
20
|
+
when the caller opts into `sourceTreeReadOk`, so this preflight can inspect an Instar checkout
|
|
21
|
+
without bypassing `SafeGitExecutor`.
|
|
22
|
+
|
|
23
|
+
## What to Tell Your User
|
|
24
|
+
|
|
25
|
+
- **Instar has a contributor preflight for new surfaces**: "Before a PR, I can run a development
|
|
26
|
+
preflight that checks lint, capability discoverability, and warns if a newly added route prefix may
|
|
27
|
+
need a CapabilityIndex classification."
|
|
28
|
+
|
|
29
|
+
## Summary of New Capabilities
|
|
30
|
+
|
|
31
|
+
| Capability | How to Use |
|
|
32
|
+
|-----------|-----------|
|
|
33
|
+
| Developer preflight guard | `instar dev:preflight` runs lint, CapabilityIndex discoverability tests, and an advisory diff scan for unclassified new route prefixes. |
|
|
34
|
+
| Route-prefix warning heuristic | Added route registrations in the diff warn when their top-level prefix is absent from `CAPABILITY_INDEX`; warnings do not fail the command. |
|
|
35
|
+
|
|
36
|
+
## Evidence
|
|
37
|
+
|
|
38
|
+
Verification:
|
|
39
|
+
|
|
40
|
+
- Unit: route-detection heuristic covers missing prefix, existing prefix, no routes, and exit-code
|
|
41
|
+
aggregation.
|
|
42
|
+
- Integration: fixture diff command path verifies the summary, warning output, and real-failure exit
|
|
43
|
+
behavior.
|
|
44
|
+
- E2E: `dist/cli.js dev:preflight` exits clean on the current tree.
|
|
45
|
+
- Dogfood: `node dist/cli.js dev:preflight` ran lint, discoverability tests, and the route heuristic
|
|
46
|
+
with exit 0.
|
|
47
|
+
- Docs: docs coverage passed after adding the CLI reference entry.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Codex fast-model fix (gpt-5.2 retired) — ELI16
|
|
2
|
+
|
|
3
|
+
Viewable private artifact:
|
|
4
|
+
https://echo.dawn-tunnel.dev/view/7bc3a2fc-512a-4d1a-b038-725e253145e9?sig=80a2a9cad2adf1d5871bf3611dd6a3b298c07997b7927a730faae64d09193745
|
|
5
|
+
|
|
6
|
+
Every Codex-powered agent makes lots of small, cheap behind-the-scenes AI calls — spotting a
|
|
7
|
+
promise it made, keeping its tone plain, sorting a message. To keep those cheap, they all ran
|
|
8
|
+
on a lightweight model called **gpt-5.2**.
|
|
9
|
+
|
|
10
|
+
On June 3, OpenAI quietly **stopped allowing gpt-5.2** on the ChatGPT-subscription kind of
|
|
11
|
+
account these agents use. From that moment every one of those cheap calls started failing with
|
|
12
|
+
a flat error — so, for example, Codey could no longer detect the commitments it makes, all day,
|
|
13
|
+
silently.
|
|
14
|
+
|
|
15
|
+
The model name was **hardcoded in two places**, so this fix updates both to point at the
|
|
16
|
+
cheapest model that still works on the account: **gpt-5.4-mini**. The agents work again
|
|
17
|
+
immediately.
|
|
18
|
+
|
|
19
|
+
The one catch, called out honestly: gpt-5.2 was the only *non-thinking* (cheapest) model. The
|
|
20
|
+
replacement is a small *thinking* model, which costs more per call. There was no cheaper option
|
|
21
|
+
left, so this trades a bit more usage for actually working. A follow-up will make this self-heal
|
|
22
|
+
— when a model gets retired, the agent will automatically fall back to a working one instead of
|
|
23
|
+
breaking.
|
|
24
|
+
|
|
25
|
+
_Patch fix · branch `echo/codex-fast-model-retire` · found by scanning live fleet logs (the
|
|
26
|
+
see-what-breaks loop) and empirically re-probing which models the account still accepts._
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# ELI16: Dev Preflight New-Surface Guard
|
|
2
|
+
|
|
3
|
+
Instar now has a developer-only preflight command for PRs that add or touch new server surfaces. The
|
|
4
|
+
command runs lint, runs the CapabilityIndex discoverability tests, and then scans the diff for newly
|
|
5
|
+
added Express route registrations.
|
|
6
|
+
|
|
7
|
+
The route scan is only a heuristic. It looks for added `app.get/post/put/delete/patch('/prefix')` or
|
|
8
|
+
`router.get/post/put/delete/patch('/prefix')` lines and warns if the top-level prefix is not in
|
|
9
|
+
`CAPABILITY_INDEX`. It never edits source, never updates `CapabilityIndex`, and never blocks the
|
|
10
|
+
server.
|
|
11
|
+
|
|
12
|
+
Only two things make the command exit nonzero: lint failing, or the discoverability/CapabilityIndex
|
|
13
|
+
unit tests failing. Route-prefix findings are warnings so the agent can make the deliberate
|
|
14
|
+
classification without hidden automation changing the registry.
|
|
15
|
+
|
|
16
|
+
Private view proof: https://codey.dawn-tunnel.dev/view/e060533e-cafd-4a37-b251-7d8d4dbeb63b?sig=7d25de0423b88fd4c59ec3f0a1238bfe69e8891d841da33d92308bec7be2f71c
|
|
17
|
+
|
|
18
|
+
Verified HTTP 200 on 2026-06-03.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Side-Effects Review — Codex `fast` tier off retired `gpt-5.2`
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `codex-fast-model-gpt52-retired`
|
|
4
|
+
**Date:** `2026-06-03`
|
|
5
|
+
**Author:** `echo`
|
|
6
|
+
**Second-pass reviewer:** `not required (Tier-1 bug fix — model-string re-point + tests, no decision surface)`
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
Two Codex model-tier maps hardcoded `fast`/`haiku` → `gpt-5.2`. OpenAI retired `gpt-5.2`
|
|
11
|
+
from the ChatGPT-account Codex surface (live 400 as of 2026-06-03), silently breaking every
|
|
12
|
+
cheap Codex call fleet-wide. Both maps now resolve `fast`/`haiku` → `gpt-5.4-mini` (the
|
|
13
|
+
cheapest model still accepted). A new unit test pins both resolvers and guards the retired
|
|
14
|
+
name. No routes, config, schema, or external surface change.
|
|
15
|
+
|
|
16
|
+
## Decision-point inventory
|
|
17
|
+
|
|
18
|
+
1. **Which replacement model?** Candidates still accepted (empirically probed 2026-06-03):
|
|
19
|
+
`gpt-5.4`, `gpt-5.4-mini`, `gpt-5.5`. Chose `gpt-5.4-mini` — the cheapest (it is already
|
|
20
|
+
the validated `balanced` tier; "mini" < plain `gpt-5.4`). `gpt-5.2` was the only
|
|
21
|
+
*non-reasoning* model, so no zero-reasoning option remains; this is the least-cost working
|
|
22
|
+
choice, not a free one.
|
|
23
|
+
2. **Re-point now vs. build the drift-resilient fallback first?** Chose to ship the re-point
|
|
24
|
+
immediately (it stops an active fleet-wide failure) and leave the structural fallback
|
|
25
|
+
(validate-against-known-good + auto-fall-back on a 400) as a follow-up. Rationale: the
|
|
26
|
+
urgent fix is small and regression-safe; the fallback is a larger, separately-testable
|
|
27
|
+
surface that shouldn't gate the stop-the-bleeding change.
|
|
28
|
+
|
|
29
|
+
## 1. Cost / quota
|
|
30
|
+
|
|
31
|
+
`fast` was the cheap non-reasoning tier (gpt-5.2 ≈ 103 tokens on a trivial prompt vs ~5–7k
|
|
32
|
+
for reasoning models). Moving it to a reasoning model (`gpt-5.4-mini`) raises per-call token
|
|
33
|
+
burn for all cheap Codex calls. This is **unavoidable** (gpt-5.2 is gone) but worth flagging
|
|
34
|
+
against the known self-inflicted cheap-call 429 pressure on the shared ChatGPT account — it
|
|
35
|
+
makes the structural drift-resilient fallback (and any cheap-call-volume reduction) more
|
|
36
|
+
valuable, not less. No way to keep the old cost without the retired model.
|
|
37
|
+
|
|
38
|
+
## 2. Tier collapse
|
|
39
|
+
|
|
40
|
+
`fast` now equals `balanced` (`gpt-5.4-mini`). Callers that distinguished the two tiers by
|
|
41
|
+
cost no longer get a cheaper `fast`. Acceptable: there is no cheaper accepted model. Reverts
|
|
42
|
+
automatically if/when a cheaper non-reasoning model is re-added to the map.
|
|
43
|
+
|
|
44
|
+
## 3. Blast radius / reversibility
|
|
45
|
+
|
|
46
|
+
Two string literals + comment updates + one new test + two updated assertions. Fully
|
|
47
|
+
reversible (revert the two map entries). Claude and Gemini resolvers are untouched
|
|
48
|
+
(framework-scoped branches). No effect on API-key callers passing raw model names (those
|
|
49
|
+
pass through verbatim — unchanged).
|
|
50
|
+
|
|
51
|
+
## 4. Tests
|
|
52
|
+
|
|
53
|
+
- New `tests/unit/codex-model-tier-resolution.test.ts`: both resolvers per tier + a
|
|
54
|
+
retired-`gpt-5.2` regression guard over `fast/balanced/capable/haiku/sonnet/opus` and the
|
|
55
|
+
undefined default.
|
|
56
|
+
- Updated `session-manager-behavioral` (codex session spawn: haiku → `gpt-5.4-mini`) and
|
|
57
|
+
`StallTriageNurse` (legacy haiku alias → `gpt-5.4-mini`).
|
|
58
|
+
- Transcript-fixture tests that contain `model: 'gpt-5.2'` (TokenLedger, CodexRolloutParser)
|
|
59
|
+
are unchanged — they parse historical rollouts and a past session legitimately used gpt-5.2.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
### dev-preflight-new-surface-friction-guard side effects
|
|
2
|
+
|
|
3
|
+
Primary risk reviewed: a developer convenience command could become hidden authority over route
|
|
4
|
+
classification.
|
|
5
|
+
|
|
6
|
+
Decision inventory:
|
|
7
|
+
|
|
8
|
+
- `instar dev:preflight` is verify-only and has no write path.
|
|
9
|
+
- The command never edits `src/server/CapabilityIndex.ts`.
|
|
10
|
+
- The command never mutates route files or server config.
|
|
11
|
+
- The command exits nonzero only for `pnpm lint` or the explicit
|
|
12
|
+
capabilities-discoverability/CapabilityIndex test invocation.
|
|
13
|
+
- Diff route-prefix findings are advisory warnings only.
|
|
14
|
+
- Diff lookup failure is a warning, not a failure, because the canonical guard remains the
|
|
15
|
+
discoverability test.
|
|
16
|
+
- `SafeGitExecutor` now includes `diff` in the explicit `sourceTreeReadOk` read-tier set so this
|
|
17
|
+
command can inspect the current Instar checkout without bypassing the safe git funnel.
|
|
18
|
+
|
|
19
|
+
Secondary risk: the heuristic could miss routes or flag false positives because it is regex-based.
|
|
20
|
+
That is acceptable by design. The heuristic is early friction for authors, not the source of truth.
|
|
21
|
+
The source of truth remains the existing CapabilityIndex registry and its unit tests.
|
|
22
|
+
|
|
23
|
+
Operational risk: running the command can be slow because it runs lint and a targeted Vitest
|
|
24
|
+
invocation. This is deliberate; the command is a contributor preflight, not a server path or
|
|
25
|
+
background job.
|
|
26
|
+
|
|
27
|
+
CI follow-up: manifest IDs must keep the `type:name` shape, so the built-in manifest registers this
|
|
28
|
+
surface as `cli:dev-preflight` while the actual command remains `instar dev:preflight`. Integration
|
|
29
|
+
assertions strip ANSI color before checking summary text because CI may enable color output.
|